排列2

Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 3804    Accepted Submission(s): 1495

Problem Description
Ray又对数字的列产生了兴趣:
现有四张卡片,用这四张卡片能排列出很多不同的4位数,要求按从小到大的顺序输出这些4位数。
Input
每组数据占一行,代表四张卡片上的数字(0<=数字<=9),如果四张卡片都是0,则输入结束。
Output
对每组卡片按从小到大的顺序输出所有能由这四张卡片组成的4位数,千位数字相同的在同一行,同一行中每个四位数间用空格分隔。
每组输出数据间空一行,最后一组数据后面没有空行。
Sample Input
  
1 2 3 4 1 1 2 3 0 1 2 3 0 0 0 0
Sample Output
  
1234 1243 1324 1342 1423 1432 2134 2143 2314 2341 2413 2431 3124 3142 3214 3241 3412 3421 4123 4132 4213 4231 4312 43211123 1132 1213 1231 1312 1321 2113 2131 2311 3112 3121 32111023 1032 1203 1230 1302 1320 2013 2031 2103 2130 2301 2310 3012 3021 3102 3120 3201 3210
Source
2007省赛集训队练习赛(2)
解释:
核心是一个全排列,要注意,排列中有相同字符的处理(参考MoreWindows的博客),其它问题就是处理格式问题。
#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
using namespace std;vector<string> vec;bool isNeedSwap(string& p,int beg,int end)
{for(;beg != end ;++beg)if( p[beg] == p[end])return false; //if(equal) needn't swapreturn true;
}
void FullCombination(string& str,int beg,int end)
{if( beg == end){vec.push_back(str);}else {for(int i=beg;i<=end;++i){if(!isNeedSwap(str,beg,i))continue;swap(str[beg],str[i]);FullCombination(str,beg+1,end);swap(str[beg],str[i]);}}
}
int main()
{string str("0000");bool isFirstTime=1; //1表示第一次visitwhile(cin>>str[0]>>str[1]>>str[2]>>str[3]){if(str[0] == '0' && str[1] == '0' && str[2] == '0' && str[3] == '0')break;//开始和结尾都不换行,只在中间换行if(!isFirstTime ) //如果不是第一次访问,换行cout << endl;else   //如果是第一次访部,标志为0isFirstTime = 0;vec.clear();FullCombination(str,0,3);sort(vec.begin(),vec.end());for(int i=0;i<vec.size()-1;++i){if (vec[i][0] == '0')continue ;if (vec[i][0] == vec[i+1][0])cout << vec[i] << ' ';else{cout << vec[i] << endl;}}cout << vec[vec.size()-1] << endl;}return 0;
}

HDU1716-全排列相关推荐

  1. HDU1716(全排列)

    排列2 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submis ...

  2. HDU1716 全排列

    不说了,格式就是 每一行最后一个不能有空格 最后一行不能有空格 0开头的不能输出 别问我怎么弄得,反正我也不清楚胡乱加条件就过了 #include <iostream> #include ...

  3. HDU1716 排列2【全排列+输出格式】

    排列2 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submis ...

  4. 字符串全排列的问题 python和c语言实现

    前言 这是一个的经典的问题 设计一个算法,输出一个字符串字符的全排列. 比如,String = "abc" 输出是"abc","bac",& ...

  5. 求字符串全排列 python实现

    文章目录 算法思想 附上c语言实现 参考 算法思想 输入一个字符串,打印这个字符串中字符的全排列. eg: 输入:abc 输出:abc acb bac bca cab cba 思路:将求字符串的全排列 ...

  6. #418 Div2 Problem B An express train to reveries (构造 || 全排列序列特性)

    题目链接:http://codeforces.com/contest/814/problem/B 题意 : 有一个给出两个含有 n 个数的序列 a 和 b, 这两个序列和(1~n)的其中一个全排列序列 ...

  7. 获取序列全排列Java,java中全排列的生成算法汇总

    全排列的生成算法就是对于给定的字符集,用有效的方法将所有可能的全排列无重复无遗漏地枚举出来.任何n个字符集的排列都可以与1-n的n个数字的排列一一对应, 因此在此就以n个数字的排列为例说明排列的生成法 ...

  8. 【经典】javascript ES5原生实现考试题答案全排列组合数组结果获取

    //考试题答案全排列组合function getAllArrange(arr, index, group) {index || (index = 0), group || (group = []);v ...

  9. 蓝桥杯 扑克序列(全排列)

    扑克序列 A A 2 2 3 3 4 4, 一共4对扑克牌.请你把它们排成一行. 要求:两个A中间有1张牌,两个2之间有2张牌,两个3之间有3张牌,两个4之间有4张牌. 请填写出所有符合要求的排列中, ...

  10. LeetCode实战:全排列

    题目英文 Given a collection of distinct integers, return all possible permutations. Example: Input: [1,2 ...

最新文章

  1. js setTimeout()的使用
  2. 二分类吸引子,排斥子,鞍点和反鞍点数据汇总
  3. CTF -杂项密码学,常见密码介绍(二)
  4. Python 操作 MySQL 的5种方式
  5. python是如何实现进程池和线程池的_进程、线程、线程池和协程如何理解?
  6. KMP Trie 例题讲解
  7. FZOJβ #31.字符串
  8. 服务器维护经验分享,医院IT运维经验分享.pdf
  9. 城市天气数据获取接口
  10. npm安装模块版本符_Java SE 9:模块和模块描述符基础知识(第2部分)
  11. 物联网卡网速被限制如何解除
  12. 语音信号处理及特征提取
  13. 守护线程Deamon
  14. 15. Python3 处理JSON格式数据(制作交易收盘价走势图)
  15. EasyExcel导出数据到Excel,浏览器提供下载
  16. linux6.5安装中文字体,Linux(CentOS6.5)系统安装Windows字体
  17. 梦幻新诛仙微信绑定没有服务器,独乐乐不如众乐乐,在《梦幻新诛仙》里交朋友居然这么简单?...
  18. 硕士学位数据分析师工资_值得拥有数据科学方面的硕士学位
  19. IMS 会话过程 响应180还是183?
  20. 智慧的提问(不做慵懒的寄生虫)

热门文章

  1. 谷歌跟oracle_Oracle诉Google,我的甜心领主
  2. linux需要关注的日志文件,如何更好地使用Linux日志
  3. mathtype中如何在双箭头上弄一个划掉的符号
  4. Learning Generalized Spoof Cues for Face Anti-spoofing论文解读及复现笔记
  5. 理光sp3055扫描文件服务器,理光3350复印机设置扫描至电脑文件夹时无法连接,提示:不能找到指定的路径,请检查设置。我的是内网...
  6. linux设置unix编码,linux下查看文件编码及修改编码
  7. groovy给list排序
  8. H5、web端页面的性能测试案例以及页面性能测试分析
  9. 计算机存储盘教程,计算机存储u盘启动盘创建工具的详细教程
  10. 概率论与数理统计 浙江大学 第38-43讲单元测验