这个是判断的条件
if(有对王){
对王大
}else{
if(长度相等){
判断第一个的大小
}else{
if(有四个的炸弹){
炸弹赢
}else{
不符合规则
}
}
}但是这里有个问题是既有文字又有数字,而且有可能出现10这个数字,所以最好是全部转成数字然后再去判断他们第一个数字的大小。
以下是题解
#include<iostream>
using namespace std;
char str1[15],str2[15],str[105];
int a[15],b[15],lena,lenb;
int main(){
while(cin.getline(str,100)){
int flag=0,len1=0,len2=0;
for(int i=0;str[i]!=0;i++){
if(str[i]=='-'){
flag=1;
i++;
}
if(flag==0){
str1[len1++]=str[i];
}else{
str2[len2++]=str[i];
}
}
//拆到两个数字类型的数组里
if(len1==11){
cout<<str1<<endl;
}else if(len2==11){
cout<<str2<<endl;
}else{
lena=0,lenb=0;
//处理数组变成数字类型数组
for(int i=0;i<len1;i++){
if(str1[i]=='A'){
a[lena++]=14;
}else if(str1[i]=='J'){
a[lena++]=11;
}else if(str1[i]=='Q'){
a[lena++]=12;
}else if(str1[i]=='K'){
a[lena++]=13;
}else if(str1[i]>='0'&&str1[i]<='9'){
int tmp=0;
do{
tmp=tmp*10+str1[i]-'0';
i++;
}while(str1[i]>='0'&&str1[i]<='9');
a[lena++]=tmp;
}
}
for(int i=0;i<len2;i++){
if(str2[i]=='A'){
b[lenb++]=1;
}else if(str2[i]=='J'){
b[lenb++]=11;
}else if(str2[i]=='Q'){
b[lenb++]=12;
}else if(str2[i]=='K'){
b[lenb++]=13;
}else if(str2[i]>='0'&&str2[i]<='9'){
int tmp=0;
do{
tmp=tmp*10+str2[i]-'0';
i++;
}while(str2[i]>='0'&&str2[i]<='9');
b[lenb++]=tmp;
}
}
if(lena==lenb){
if(a[0]>b[0]){
cout<<str1<<endl;
}else{
cout<<str2<<endl;
}
}else if(lena==4){
cout<<str1<<endl;
}else if(lenb==4){
cout<<str2<<endl;
}else{
printf("ERROR\n");
}
}
}
} 
京公网安备 11010502036488号