递归实现n位数的0、1组合。
#include<stdio.h>
#include<stdlib.h>
int n=3,s[7];
void dfs(int k)
{
int i;
if(k==n)
{
for(i=0;i<n;i++)
{
printf("%d",s[i]);
}
printf("\n");
return;
}
s[k]=0;
dfs(k+1);
s[k]=1;
dfs(k+1);
}
int main()
{
dfs(0);
system("pause");
return 0;
}
递归实现1-n的n位数字的所有随机组合的情况。
#include<stdio.h>
#include<stdlib.h>
int n,path[20],vis[20];
void dfs(int step)
{
int i;
if(step>=n)
{
for(i=0;i<n;i++)
printf("%d",path[i]);
printf("\n");
return;
}
for(i=1;i<=n;i++)
{
if(vis[i])
continue;
path[step]=i;
vis[i]=1;
dfs(step+1);
vis[i]=0;
}
}
int main()
{
int i;
scanf("%d",&n);
for(i=0;i<n;i++)
vis[i]=0;
dfs(0);
return 0;
}