码迷,mamicode.com
首页 > 编程语言 > 详细

【算法入门竞赛经典】【7.2枚举排列】

时间:2017-08-25 14:00:27      阅读:147      评论:0      收藏:0      [点我收藏+]

标签:printf   logs   class   style   std   print   scan   return   turn   

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枚举排列】

标签:printf   logs   class   style   std   print   scan   return   turn   

原文地址:http://www.cnblogs.com/chengdongni/p/7427355.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!