題目整理 dfs入門

2021-08-21 20:31:37 字數 1506 閱讀 7059

目錄模板

zcmu1683 排列(不含重複數的全排列)

hdu1016 prime ring problem(素數環)

hdu1241 oil deposits(圖的dfs)

ny20 吝嗇的國度(圖的dfs)

zcmu2160 wjw和ly的雙人遊戲

foj1920 left mouse button

zoj2475 benny's compiler(有向圖是否存在環)

dfs對我來說好難qaq可能寫的太少了吧……還是得好好練練

void dfs()//引數用來表示狀態

if(越界或者是不符合法狀態)

return;

for(擴充套件方式)

}}

【題意】

給定乙個數,輸出乙個數的全排列。

【解題思路】

大概是最最基礎的dfs題了,做好標記,記錄好數字,每當c=n時輸出一次就好啦。

【**】

#includeusing namespace std;

int v[1005],a[1005],n;

void dfs(int c)

int main()}}

if(cnt==m)return sum;

else return 0;//若這些城堡中有城堡 需要攻擊的前城堡沒被攻擊過 則不能計算入內 所以返回0

}void dfs(int x,int c)

if(x==n+1)return;

v[x]=1;

dfs(x+1,c+1);//攻擊當前城堡

v[x]=0;

dfs(x+1,c);//不攻擊當前城堡

}int main()

return 0;

}

【題意】

掃雷。輸出滑鼠最少需要點幾次可以找到所有的雷。

【解題思路】

即當滑鼠點到0時,0的周圍所有數字都會出現,所以dfs找到每個0以及其周圍的數字作為1個聯通塊,並將它們做好標記,每多1個連通塊答案個數就+1,最後將沒有標記過且不是雷的個數再進行累加即可。

【**】

#include#includeusing namespace std;

const int maxn=15;

int n,d[8][2]=, , , , , , , };;

char s[15][15];

void dfs(int x,int y)

}int main()

if(edge[x][i])

}}int main()

int t;

scanf("%d",&t);

vis[t]=1;

flag=1;

dfs(t);

if(flag)printf("yes\n");

else printf("no\n");

}return 0;

}

dfs簡單題目

1 桐桐的全排列 可在 中國石油acm網 提交 description 今天,桐桐的老師布置了一道數學作業,要求列出所有從數字1到數字n的連續自然數的排列,要求所產生的任一數字 序列中不允許出現重複的數字。因為排列數很多,桐桐害怕寫漏了,所以她決定用計算機程式設計來解決。input 只有乙個整數n ...

c 尋找部分和題目 dfs入門

1.題目描述 n個正整數,每個數最多只能選一次,是否可以從中選出幾個數,使他們的和為target 例如 n 4,target 9 1 2 4 5 存在4 5 9 保證最多只有一種和為target的選法 即在上例中不會有如 3 6 4 5 的資料出現 1.1 輸入 輸入第一行兩個正整數n和target...

CTF題目整理

最近在整理一些ctf題目,遇到很多很有意思的東西,記錄下來 0x01 柵欄加密 柵欄加密法是一種比較簡單快捷的加密方法。柵欄加密法就是把要被加密的檔案按照一上一下的寫法寫出來,再把第二行的文字排列到第一行的後面。相應的,破譯方法就是把文字從中間分開,分成2行,然後插入。柵欄加密法一般配合其他方法進行...