int main()
{
void print(int n,int a[],int cur);
int n,a[1000];
int cur;
cur=0;
while(scanf("%d",&n)&&n)
{
cur=0;//cur從0開始
print(n,a,cur);
}
return 0;
}
void print(int n,int a[],int cur)//cur是a數組中當前元素的位置指針(下標)
{
int i,j;
if(cur==n)
{
for(i=0;i<n;i++)
printf("%d ",a[i]);
printf("\n");
}
else
{
for(i=1;i<=n;i++)
{
int ok=1;
for(j=0;j<cur;j++)
if(a[j]==i)
{ ok=0; break; }
if(ok)
{
a[cur] = i;///這裏應該這麼理解,求4的全排列時,當i等於4時,cur纔等於3(下標),
///所以進入下一個遞歸調用後,cur就等於n了,就會輸出數組a中的元素
print(n,a,cur+1);
}
}
}
}