Problem Description
A A 2 2 3 3 4 4, 一共4对扑克牌。请你把它们排成一行。
要求:两个A中间有1张牌,两个2之间有2张牌,两个3之间有3张牌,两个4之间有4张牌。
请填写出所有符合要求的排列中,字典序最小的那个。
例如:22AA3344 比 A2A23344 字典序小。当然,它们都不是满足要求的答案。
“A”一定不要用小写字母a,也不要用“1”代替。字符间一定不要留空格。
Input
无
Output
A A 2 2 3 3 4 4, 一共4对扑克牌。请你把它们排成一行。
要求:两个A中间有1张牌,两个2之间有2张牌,两个3之间有3张牌,两个4之间有4张牌。
请填写出所有符合要求的排列中,字典序最小的那个。
例如:22AA3344 比 A2A23344 字典序小。当然,它们都不是满足要求的答案。
“A”一定不要用小写字母a,也不要用“1”代替。字符间一定不要留空格。
Input
无
Output
输出一个由8个字符构成的字符串。
#include <iostream>
#include<stdio.h>
#include<algorithm>
using namespace std;
int main()
{
int a1,a2,two1,two2,three1,three2,four1,four2;
char chs[10]={'2','2','3','3','4','4','A','A'};
while(true){
a1=a2=two1=two2=three1=three2=four1=four2=-1;
for(int i=0;i<8;i++)
{
if(chs[i]=='A'&&a1==-1)a1=i;
else if(chs[i]=='A'&&a1!=-1)a2=i;
else if(chs[i]=='2'&&two1==-1)two1=i;
else if(chs[i]=='2'&&two1!=-1)two2=i;
else if(chs[i]=='3'&&three1==-1)three1=i;
else if(chs[i]=='3'&&three1!=-1)three2=i;
else if(chs[i]=='4'&&four1==-1)four1=i;
else if(chs[i]=='4'&&four1!=-1)four2=i;
}
//cout<<a2-a1<<" "<<two2-two1<<" "<<three2-three1<<" "<<four2-four1<<" "<<chs<<endl;
if(a2-a1==2&&two2-two1==3&&three2-three1==4&&four2-four1==5)
{
cout<<chs;
break;
}
if(next_permutation(chs,chs+8)==0)
break;
}
return 0;
}