全排列
#include <stdio.h>
int visited[6];
int p[6];
void dfs(int step)
{
if(step>3)
{
for(int k=1;k<=3;k++)
printf("%d ",p[k]);
printf("\n");
}
else
{
for(int k=1;k<=3;k++)
{
if(!visited[k])
{
visited[k] = 1;
p[step] = k;
dfs(step+1);
}
}
}
}
int main()
{
dfs(1);
return 0;
}
子集
#include <stdio.h>
int s[6],count;
void backTrace(int i)
{
if(i>5)
{
count++;
for(int k=1;k<=5;k++)
if(s[k]) printf("%d ",k);
printf("\n");
}
else
{
for(int k=0;k<=1;k++)
{
s[i] = k;
backTrace(i+1);
}
}
}
int main()
{
backTrace(1);
printf("%d\n",count);
return 0;
}