标签:
5 3
543 542 541 532 531 521 432 431 421 321
这是一个dfs算法题。。我做了一会(我昨天看了别人的代码。。写的代码与他的有差别,但思路一样)但是一直输出有问题。。费了好长时间。。仔细对比,发现我当时定义 i 时,定义了全局变量。我改成把i定义到dfs函数里面时候,输出就对了。ac了。。现在觉得定义在哪应该没什么影响。。哪位大神愿意分享一下原因,欢迎讨论。。
参考思路的网址:http://blog.csdn.net/niushuai666/article/details/7363454
#include<iostream> #include<stdio.h> #include<string.h> using namespace std; int p[10]={0}; bool visit[10]; void dfs(int start,int cur,int n) { int i,j; if(cur>n) { for(j=1;j<=n;j++) cout<<p[j]; cout<<endl; return; } for(i=start;i>=1;i--) { if(!visit[i]) { visit[i]=true; p[cur]=i; dfs(i-1,cur+1,n); visit[i]=false; } } } int main() { int n,r; while(scanf("%d%d",&n,&r)!=EOF)//5 3 { memset(visit,false,sizeof(visit)); dfs(n,1,r);//从5开始 第1层 3个数 } return 0; }
标签:
原文地址:http://blog.csdn.net/zuguodexiaoguoabc/article/details/43935843