递归 生成全排列
#include <stdio.h>
#include <string.h>
int a[20], N;
void fun(int n, int r)
{
int i, j, flag;
if( r == n)
{
for(i = 0; i < n; i++)
printf("%d ",a[i]);
puts("");
return ;
}
else
{
for (i = 1; i <= n; i++) {
flag = 1;
for(j = 0; j < r; j++)
if ( i == a[j] )
flag = 0;
if(flag) {
a[r] = i;
fun(n, r + 1);
}
}
}
}
int main( )
{
while (scanf("%d", &N), N)
{
fun( N, 0);
}
return 0;
}
posted on 2011-08-11 16:58 more think, more gains 阅读(147) 评论(0) 收藏 举报