1. 程式人生 > >【算法入門競賽經典】【7.2枚舉排列】

【算法入門競賽經典】【7.2枚舉排列】

n) %d color class std logs -1 邊界 枚舉

7.2.1 生成1~n的排列

#include<stdio.h>
int num[20],n;

void Print(int n,int *a,int cur)
{
    int i,j,flag;
    if(cur == n+1)//遞歸邊界 
    {
        for( i = 1; i < cur; i ++)
            printf("%d ",a[i]);
        printf("\n");
    }
    else
    {
        for( i = 1; i <= n; i ++)
        {
             flag 
= 1; for( j = 1; j < cur; j ++) if(a[j] == i)//如果i已經在a[1..cur-1]出現過,則舍棄 flag = 0; if(flag) { a[j] = i; Print(n,a,cur+1);//遞歸調用 } } } } int main() { scanf(
"%d",&n); Print(n,num,1); return 0; }

【算法入門競賽經典】【7.2枚舉排列】