dfs

Posted wantchange

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了dfs相关的知识,希望对你有一定的参考价值。

用dfs时就说一个问题有很多层,重这一层到下一层用dfs,一层跑完后retuen,然后回到原来的状态,如果一层中有多个情况,就需要跑一个循环

#include<bits/stdc++.h>
#include<algorithm>
using namespace std;
int res[5],t[5],ans;
int a[]=0,1,1,1,2,2,3;
int b[]=0,2,3,4,3,4,4;
void dfs(int d)

if (d==7)

int flag=1;
for (int i=1;i<=4;i++)

if (res[i]!=t[i])

flag=0;
break;


if (flag)

ans++;
return;


else

for (int k=0;k<3;k++)

if (k==0)

t[a[d]]+=3;
t[b[d]]-=0;
dfs(d+1);
t[a[d]]-=3;
t[b[d]]+=0;

if (k==1)

t[a[d]]+=1;
t[b[d]]+=1;
dfs(d+1);
t[a[d]]-=1;
t[b[d]]-=1;

if (k==2)

t[a[d]]-=0;
t[b[d]]+=3;
dfs(d+1);
t[a[d]]+=0;
t[b[d]]-=3;




int main()

int T,kase=0;
cin>>T;
while (T--)

memset(t,0,sizeof(t));
scanf("%d%d%d%d",&res[1],&res[2],&res[3],&res[4]);
ans=0;
dfs(1);
cout<<"Case #"<<++kase<<": ";
if (ans==0)
cout<<"Wrong Scoreboard"<<endl;
else if (ans==1)
cout<<"Yes"<<endl;
else
cout<<"No"<<endl;

return 0;

以上是关于dfs的主要内容,如果未能解决你的问题,请参考以下文章

非DFS使用空间

[dfs] aw1118. 分成互质组(dfs搜索顺序+dfs状态定义+最大团+好题)

(转)BFS与DFS

[dfs] aw165. 小猫爬山(dfs剪枝与优化+好题)

黑科技——树剖两次dfs转一次dfs!

浅谈DFS序