标签:
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