是全排列.换短点你看..只要加上约束条件就好了
#include<stdio.h>
char *c[7]={"赵","钱","孙"};
void arr(int *a,int b,int e)
{
if(b==e)
{
for(int i=0;i<e;i++)
printf("%s ",c[a[i]]);
printf("\n");
}
else
{
for(int j=b;j<e;j++)
{
int demo=a[b];
a[b]=a[j];
a[j]=demo;
arr(a,b+1,e);
demo=a[b];
a[b]=a[j];
a[j]=demo;
}
}
}
int main()
{
int a[7]={0,1,2};
arr(a,0,3);
return 0;
}
主要是太长了..前面的排列看不见了..回去睡觉了