枚举排列题解
问题是将n个数排列出所有的结果,自然用到枚举法将个个可能的结果排除,中间需要判断,巧用ok的值。
1 #include2 int a[300]; 3 int n; 4 void paixu(int cur) 5 { 6 int i,t,ok; 7 if(cur==n+1) 8 { 9 for(i=1; i<=n; i++) 10 printf("%d ",a[i]); 11 printf(" "); 12 } 13 else 14 { 15 for(i=1; i<=n; i++) 16 { 17 ok=1; 18 for(t=1; t ) 19 if(a[t]==i) 20 { 21 ok=0; 22 break; 23 } 24 if(ok) 25 { 26 a[cur]=i; 27 paixu(cur+1); 28 } 29 } 30 } 31 } 32 int main() 33 { 34 int i,g; 35 scanf("%d",&n); 36 paixu(1); 37 return 0; 38 }