一道看逻辑的string题
注意扑克牌中数字的大小和花色的排序
ac代码如下
#include <iostream>
#include <string>
using namespace std;
char s[5];
char c[5];
int j=0;
int main()
{
string a;
cin>>a;
for(int i=0;i<a.length();i+=2){
s[j]=a[i];
c[j]=a[i+1];
j++;
}
for(int i=0;i<4;i++){
int k=i;
for(int j=i+1;j<5;j++){
if(s[j]!='A'&&s[k]!='A'){
if(s[j]<s[k])k=j;
}else if(s[k]=='A'){
char d;
d=s[j];
s[j]=s[k];
s[k]=d;
d=c[j];
c[j]=c[k];
c[k]=d;
}
}
if(k!=i){
char d;
d=s[i];
s[i]=s[k];
s[k]=d;
d=c[i];
c[i]=c[k];
c[k]=d;
}
}
for(int i=0;i<4;i++){
int k=i;
for(int j=i+1;j<5;j++){
if(s[k]==s[j]){
if(c[k]!='d'&&c[j]!='d'){
if(c[k]>c[j])k=j;
}else{
if(c[j]=='d'){
char d;
d=c[k];
c[k]=c[j];
c[j]=d;
}
}
}
}
if(k!=i){
char d;
d=c[i];
c[i]=c[k];
c[k]=d;
}
}
for(int i=0;i<5;i++){
cout<<s[i]<<c[i]<<" ";
}
return 0;
}