用一副牌斗地主作为家喻户晓的娱乐活动,我们拿到牌时,首先得理牌,现在我们需要在手中的牌内找出最大的“炸弹”(为了 方便统计,我们的牌大小为A.2.3... 10, JQK,4张相同的牌为“炸弹”),如果没
输入说明: -行由.,.....10,J,Q,K组成的牌,不含王,4<-牌张数<=52
输出说明:输出找到最大的“炸弹”的牌面信息。
输入样例:
AAA234555599A67910JQK
输出样例:
5
c#?
#include <stdio.h>
int main() {
char s[200],c;
int i,a[13]={0},max=0,flag=0;
scanf("%s",&s);
for(i=0;s[i]!='\0';i++){
if(s[i]>='2'&&s[i]<='9'){
a[s[i]-'0']++;
}
else if(s[i]=='J'){
a[11]++;
}
else if(s[i]=='Q'){
a[12]++;
}
else if(s[i]=='A'){
a[1]++;
}
else if(s[i]=='1'){
a[10]++;
i++;
}
else {
a[13]++;
}
}
for(i=13;i>0;i--){
if(a[i]>=4){
flag=1;
if(i<10)c=i+'0';
else if(i==11)c='J';
else if(i==12)c='Q';
else if(i==1)c='A';
else c='K';
printf("%c",c);break;
}
}
if(flag==0)printf("DAMN");
return 0;
}
#include <stdio.h>
int main()
{
// Read input.
char s[60];
scanf("%s", s);
// Convert input to numbers in range [1, ... 13].
int cards[52];
int n = 0;
const char *p = s;
while (*p)
{
switch (*p)
{
case 'A':
cards[n] = 1;
break;
case 'J':
cards[n] = 11;
break;
case 'Q':
cards[n] = 12;
break;
case 'K':
cards[n] = 13;
break;
case '1':
p++; // read '0'
cards[n] = 10;
break;
default:
cards[n] = *p - '0';
break;
}
n++;
p++;
}
// Sort the numbers.
for (int i = 0; i < n - 2; i++)
{
for (int j = i; j < n; j++)
{
if (cards[j] < cards[i])
{
int t = cards[i];
cards[i] = cards[j];
cards[j] = t;
}
}
}
// Find bomb.
int i = 0;
int bomb = 0;
while (i < n)
{
int c = cards[i];
int j = i + 1;
while (j < n && cards[j] == c)
j++;
if (j - i == 4 && c > bomb)
bomb = c;
i = j;
}
// Output the bomb.
if (bomb == 0)
{
printf("DAMN");
}
else
{
switch (bomb)
{
case 1:
printf("A");
break;
case 11:
printf("J");
break;
case 12:
printf("Q");
break;
case 13:
printf("K");
break;
default:
printf("%d", bomb);
break;
}
}
return 0;
}