将i定义为全局变量,和定义为局部变量为什么差距这么大?
JRzui 2017-02-27 02:16:52 #include <stdio.h>
#include <stdlib.h>
int a[10],book[10],n;
void dfs(int step)
{
int i;
if(step==n+1) //判断是否为第n+1个盒子,那么前面n个盒子已经放好牌了
{
//输出一种排列
for(i=1;i<=n;i++)
printf("%d",a[i]);
printf("\n");
return; //返回之前的一步,也就是上一次调用dfs函数的地方
}
//每次按从小到大放排
for(i=1;i<=n;i++)
if(book[i]==0) //第i张牌未被使用过
{
a[step]=i; //将牌放到第step个盒子中
book[i]=1; //标记已被使用过
dfs(step+1); //进行下一个盒子
book[i]=0; //将刚刚尝试的扑克牌收回,好进行下一次尝试,这一步非常重要!!!!
}
return;
}
int main()
{
scanf("%d",&n); //n要在1~9之间
dfs(1); //首先站在一号盒子前面
return 0;
}
如上,将 i 在dfs中声明时 输入n为3
输出为3的全排列
但将 i 作为全局变量的时候就只能输出 123了
这是为什么啊