一、题目
A A 2 2 3 3 4 4, 一共4对扑克牌。请你把它们排成一行。
要求:两个A中间有1张牌,两个2之间有2张牌,两个3之间有3张牌,两个4之间有4张牌。请填写出所有符合要求的排列中,字典序最小的那个。
例如:22AA3344 比 A2A23344 字典序小。当然,它们都不是满足要求的答案。
请通过浏览器提交答案。“A”一定不要用小写字母a,也不要用“1”代替。字符间一定不要留空格。
二、思路
事实上题目已经给了提示,“不要用1代替A”,事实上我们就是要用1代替A,最后再根据1输出A。
用12345678分别代表AA223344的下标。
因为A和A之间要有一张牌,那么他们之间的差就是2,以此类推,2和2之间差是3,3和3之间是4,4和4之间是5。
用STL自带全排列:next_permutation()函数,默认是字典序的升序排列。
三、题解
#include <iostream> #include <algorithm> using namespace std; int num[8]={1,2,3,4,5,6,7,8}; int find (int a) { for (int i=0;i<8;i++) { if(nu