题面:
背景:两个人每人发3张牌(各从一副牌中),每张牌包括花色(红桃(Heart)>黑桃(Spade)>方块(Diamond)>梅花(Club))和大小(从小到大依次是:2-10、J、Q、K、A),谁手上有最大的一张或多张(如果有相同的牌)牌谁获胜。
输入:A的3张牌(未排序)和B的3张牌(未排序)。(参见用例)
输出:A的3张牌的排序后的输出和B的3张牌的排序后的输出,以及A和B谁获胜。(参见用例)
测试输入 期待的输出 时间限制 内存限制 额外进程
测试用例 1 以文本方式显示
DA H2 C3↵
H4 H3 DJ↵
以文本方式显示
Winner is B!↵
A: H2 DA C3↵
B: H4 H3 DJ↵
无限制 64M 0
测试用例 3 以文本方式显示
HA CA CB↵
HQ CJ CQ↵
以文本方式显示
Input Error!↵
无限制 64M 0
测试用例 4 以文本方式显示
HA CA CJ↵
DA DK DK↵
以文本方式显示
Input Error!↵
无限制 64M 0
测试用例 5 以文本方式显示
SA SJ SK↵
SA SJ SK↵
以文本方式显示
Winner is X!↵
A: SA SK SJ↵
B: SA SK SJ↵
无限制 64M 0
问题:最后一个保密点过不去
附代码:
char a[3][3],b[3][3];
#include<stdio.h>
#include<string.h>
main(){
int trb[3]={1,1,1},tra[3]={1,1,1},flag=1,temp1,i,j,a1[3][2],b1[3][2];
scanf("%s %s %s",a[0],a[1],a[2]);
scanf("%s %s %s",b[0],b[1],b[2]);
for(j=0;j<3;j++)
if(a[0][j]!=a[1][j])
tra[0]=0;
for(j=0;j<3;j++)
if(a[0][j]!=a[2][j])
tra[1]=0;
for(j=0;j<3;j++)
if(a[2][j]!=a[1][j])
tra[2]=0;
for(j=0;j<3;j++)
if(b[2][j]!=b[1][j])
trb[0]=0;
for(j=0;j<3;j++)
if(b[0][j]!=b[1][j])
trb[1]=0;
for(j=0;j<3;j++)
if(b[0][j]!=b[2][j])
trb[2]=0;
for(i=0;i<3;i++)
if(tra[i]==1)
{printf("Input Error!\n");return 0;}
for(i=0;i<3;i++)
if(trb[i]==1)
{printf("Input Error!\n");return 0;}
for(i=0;i<3;i++)
{switch(a[i][0])
{case'H':a1[i][0]=4;break;
case'S':a1[i][0]=3;break;
case'D':a1[i][0]=2;break;
case'C':a1[i][0]=1;break;
default:{printf("Input Error!\n");return 0;}
}}
for(i=0;i<3;i++)
{switch(a[i][1])
{case'A':a1[i][1]=14;break;
case'K':a1[i][1]=13;break;
case'Q':a1[i][1]=12;break;
case'J':a1[i][1]=11;break;
case'1':{ if(a[i][2]=='0') a1[i][1]=10;
else {printf("Input Error!\n");return 0;} }
break;
case'2':case'3':case'4':case'5':case'6':case'7':case'8':case'9': { if(a[i][2]=='\0') a1[i][1]=a[i][1]-'0';
else {printf("Input Error!\n");return 0;}}break;
default:{printf("Input Error!\n");return 0;}
}}
for(i=0;i<3;i++)
{switch(b[i][0])
{case'H':b1[i][0]=4;break;
case'S':b1[i][0]=3;break;
case'D':b1[i][0]=2;break;
case'C':b1[i][0]=1;break;
default:{printf("Input Error!\n");return 0;}
}}
for(i=0;i<3;i++)
{switch(b[i][1])
{case'A':b1[i][1]=14;break;
case'K':b1[i][1]=13;break;
case'Q':b1[i][1]=12;break;
case'J':b1[i][1]=11;break;
case'1':{ if(b[i][2]=='0') b1[i][1]=10;
else {printf("Input Error!\n");return 0;} }
break;
case'2':case'3':case'4':case'5':case'6':case'7':case'8':case'9': { if(b[i][2]=='\0') b1[i][1]=b[i][1]-'0';
else {printf("Input Error!\n");return 0;}}break;
default:{printf("Input Error!\n");return 0;}
}}
//输入参数,并判断输入是否合法
for(i=0;i<2;i++)
{for(j=0;j<2-i;j++)
if(a1[j][0]<=a1[j+1][0])
{temp1=a1[j][0];a1[j][0]=a1[j+1][0];a1[j+1][0]=temp1;temp1=a1[j][1];a1[j][1]=a1[j+1][1];a1[j+1][1]=temp1;}
}
for(i=0;i<2;i++)
{for(j=0;j<2-i;j++)
if(b1[j][0]<=b1[j+1][0])
{temp1=b1[j][0];b1[j][0]=b1[j+1][0];b1[j+1][0]=temp1;temp1=b1[j][1];b1[j][1]=b1[j+1][1];b1[j+1][1]=temp1;}
}
if(a1[0][0]==a1[1][0]&&a1[1][0]==a1[2][0])
{for(i=0;i<2;i++)
{for(j=0;j<2-i;j++)
if(a1[j][1]<=a1[j+1][1])
{temp1=a1[j][1];a1[j][1]=a1[j+1][1];a1[j+1][1]=temp1;}
}}
else{for(i=0;i<2;i++)
if(a1[i][0]==a1[i+1][0]&&a1[i][1]<=a1[i+1][1])
{temp1=a1[i][1];a1[i][1]=a1[i+1][1];a1[i+1][1]=temp1;}
}
if(b1[0][0]==b1[1][0]&&b1[1][0]==b1[2][0])
{for(i=0;i<2;i++)
{for(j=0;j<2-i;j++)
if(b1[j][1]<=b1[j+1][1])
{temp1=b1[j][1];b1[j][1]=b1[j+1][1];b1[j+1][1]=temp1;}
}}
else{for(i=0;i<2;i++)
if(b1[i][0]==b1[i+1][0]&&b1[i][1]<=b1[i+1][1])
{temp1=b1[i][1];b1[i][1]=b1[i+1][1];b1[i+1][1]=temp1;}
}
//排序
for(i=0;i<3;i++)
{for(j=0;j<2;j++)
if(a1[i][j]!=b1[i][j])
flag=0;
}
if(flag==1) printf("Winner is X!\n");
if(flag==0)
for(i=0;i<3;i++)
{if(a1[i][0]>b1[i][0])
{printf("Winner is A!\n");break;}
else if(a1[i][0]<b1[i][0]){printf("Winner is B!\n");break;}
else{ if(a1[i][1]>b1[i][1])
{printf("Winner is A!\n");break;}
else if(a1[i][1]<b1[i][1]){printf("Winner is B!\n");break;}
}
}
//比较
printf("A:");
for(i=0;i<3;i++)
{printf(" ");
switch(a1[i][0])
{case 4:printf("H");break;
case 3:printf("S");break;
case 2:printf("D");break;
case 1:printf("C");break;
}
switch(a1[i][1])
{case 14:printf("A");break;
case 13:printf("K");break;
case 12:printf("Q");break;
case 11:printf("J");break;
default:printf("%d",a1[i][1]);
}}
printf("\n");
printf("B:");
for(i=0;i<3;i++)
{printf(" ");
switch(b1[i][0])
{case 4:printf("H");break;
case 3:printf("S");break;
case 2:printf("D");break;
case 1:printf("C");break;
}
switch(b1[i][1])
{case 14:printf("A");break;
case 13:printf("K");break;
case 12:printf("Q");break;
case 11:printf("J");break;
default:printf("%d",b1[i][1]);
}}
printf("\n");
return 0;
}