1.写上循环边界后,确定在什么情况下会输出;
2.递归部分,先修改这个数的状态,表明这个数已经用过了不会再用它;
递归回溯,表明选下一个数。#include[HTML_REMOVED]
int a[16],st[16];
int n,i;
void dfs(int u)
{
if(u>n){
for(i=1;i<=n;i++)if(st[i]==1)
printf(“%d “,i);
printf(“\n”);
return;
}st[u]=2; //u从一开始,如果这里判断的是进入,第一行输出1 2 3
dfs(u+1);
st[u]=1;
dfs(u+1);
}
int main()
{
scanf(“%d”,&n);
dfs(1);
return 0;
}