全排列

时间限制(普通/Java) : 1000 MS/ 3000 MS          运行内存限制 : 65536 KByte
总提交 : 1148            测试通过 : 302 

比赛描述

全排列的生成就是对于给定的字符集或数集,用有效的方法将所有可能的全排列无重复无遗漏地枚举出来。对给定的字符集中的字符规定一个先后关系,在此基础上规定两个全排列的先后是从左到右逐个比较对应的字符的先后,或根据给定的数集中的大小关系,规定两个全排列的先后是从左到右逐个比较对应的数的大小,即依照字典序给出全排列。例如字符集{1,2,3},较小的数字较先,这样按字典序生成的全排列是:
1 2 3
1 3 2
2 1 3
2 3 1
3 1 2
3 2 1
给定n个整数,现请编程求它们所有的全排列。

输入

输入包括两个行,第一行给出正整数n( 0 < n <=8), 第二个是 n个整数(大小范围:[-10^4, 10^4])。

输出

按字典序输出这n个整数的全排列,每一行给出一个全排列。

样例输入

3
1 23 88

样例输出

1 23 88
1 88 23
23 1 88
23 88 1
88 1 23
88 23 1

题目来源

NUPT

思路:非常简单的全排列问题。可以用DFS回溯求全排列,STL中有next_permutation(  )这个函数更加方便。一定要先进行一个排序!不然Test1就卡住了。另外要注意输出格式,行末不能有多余空格,否则会出现output limite exceed这个结果。

 #include <cstdio>
#include <algorithm>
#include <cstdlib>
using namespace std; const int maxn = ;
int a[maxn]; int cmp( const void* a, const void* b ) {
return *( int* )a - *( int* )b;
} void printArray( int A[], int n ) {
int i;
//printf( "%d: ", ++count );
for( i = ; i < n - ; i++ ) {
printf( "%d ", A[i] );
}
printf( "%d", A[n - ] );
printf( "\n" );
} int main() {
int n;
scanf( "%d", &n );
for( int i = ; i < n; i++ ) {
scanf( "%d", &a[i] );
}
qsort( a, n, sizeof( a[]), cmp );
do {
printArray( a, n );
}while( next_permutation( a, a + n ) );
return ;
}

最新文章

  1. Html5 Egret游戏开发 成语大挑战(二)干净的eui项目和资源准备
  2. 【BZOJ-2229】最小割 最小割树(最大流+分治)
  3. 使用Android点击按钮跳转页面
  4. Linux之date
  5. [转]How to insert a row between two rows in an existing excel with HSSF (Apache POI)
  6. Ubuntu 12.04 下安装 VirtualBox 及虚拟机winxp的安装
  7. Android处理图片OOM的若干方法小结 (推荐)
  8. mysq 安装时候进行生成数据库系统时候执行语句 ./scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql 时候报错
  9. mysql 增加用户
  10. [wikioi]乌龟棋
  11. PARTITION(number theory) ALSO Explosive number in codewars
  12. Android中那些权限
  13. jQuery实现返回顶部功能
  14. Android网络请求框架AsyncHttpClient实例详解(配合JSON解析调用接口)
  15. flutter 自定义主题切换
  16. H5_0002:微信分享设置
  17. 【内存溢出】Maven编译时内存溢出的问题解决方式
  18. Leetcode 153. Find Minimum in Rotated Sorted Array -- 二分查找的变种
  19. 使用Java泛型返回动态类型
  20. ElasticSearch权威指南学习(分布式集群)

热门文章

  1. 【CG】CG标准函数库——数学函数
  2. Unity AssetBundles and Resources指引 (二) Resources文件夹
  3. Flex应用一览表
  4. SDUT 3344 数据结构实验之二叉树五:层序遍历
  5. Facebook三种分享方式
  6. java web学习
  7. WWF3事务和异常处理类型活动&lt;第四篇&gt;
  8. PHP:PHP页面编码问题(转载)
  9. ON DUPLICATE KEY UPDATE用法
  10. vim的.vimrc文件设置