【递归入门】全排列

来源:互联网 发布:知乐小说作品集百度云 编辑:程序博客网 时间:2024/06/06 03:30


问题 A: 【递归入门】全排列

时间限制: 1 Sec  内存限制: 128 MB

题目描述

     排列与组合是常用的数学方法。 
先给一个正整数 ( 1 < = n < = 10 ) 
例如n=3,所有组合,并且按字典序输出: 
1 2 3 
1 3 2 
2 1 3 
2 3 1 
3 1 2 
3 2 1 

输入

输入一个整数n(  1<=n<=10)

输出

输出所有全排列

每个全排列一行,相邻两个数用空格隔开(最后一个数后面没有空格)

样例输入

3

样例输出

1 2 3
1 3 2
2 1 3
2 3 1
3 1 2
3 2 1
#include<stdio.h>bool book[11];int n,order[11];void dfs(int cur);void show();int main(){scanf("%d",&n);dfs(0);return 0;}void dfs(int cur){if(cur==n){show();return ;}for(int i=1;i<=n;i++){if(book[i]==false){order[cur]=i;book[i]=true;dfs(cur+1);book[i]=false;}}}void show(){for(int i=0;i<n;i++){printf("%d",order[i]);if(i!=n-1)putchar(' ');elseputchar('\n'); }}



原创粉丝点击