a524

輸入說明 :

輸入為一個 n (n<=8),代表鄭學長的密碼位數。

輸出說明 : .輸出所有可能的密碼,依字典順序反向排列(因為你覺得他的密碼應該在後半段)。

排列的題目,演算法筆記這篇的排列那邊,看懂應該就會寫了

#include<stdio.h>
int n;
int s[8];
int a[8];
int u[8];

void re(int c)
{    
    int i;
    if(c==n)
    {
        for(i=0;i<n;i++)
            printf("%d",s[i]);

        puts("");

        return;
    }

    for(i=0;i<n;i++)
    {    
        if(u[i]==0)
        {    
            u[i] = 1;
            s[c] = a[i];

            re(c+1);
            u[i]=0;
        }
    }    
}

int main()
{
    int i;
    while(scanf("%d",&n)!=EOF)
    {
        for(i=0;i<n;i++)
            a[i]=n-i;

        re(0);
    }
}