为啥第二题过不了
求问大佬们为啥我的第二题死活过不了
我感觉完全对的啊
#include <stdio.h>
#include <stdlib.h>
int cmp(int *a, int *b)
{
return *a - *b;
}
int cmp2(char *a, char *b)
{
return (int)*a - (int)*b;
}
struct card
{
int cnum;
int *count;
char *ctype;
int *jishu;
};
typedef struct card *CARD;
int main()
{
int num;
scanf("%d", &num);
struct card deal[num];
//读入数字
for (int i = 0; i < num; i++)
{
scanf("%d", &deal[i].cnum);
getchar();
deal[i].count = (CARD)malloc(sizeof(int) * deal[i].cnum);
deal[i].ctype = (CARD)malloc(sizeof(char) * deal[i].cnum);
deal[i].jishu = (CARD)malloc(sizeof(int) * 11);
//读入数字
for (int j = 0; j < deal[i].cnum; j++)
{
scanf("%d", deal[i].count + j);
getchar();
}
//读入类型
for (int j = 0; j < deal[i].cnum; j++)
{
scanf("%c", deal[i].ctype + j);
getchar();
}
}
int times[num];
int flag = 0;
//先对数据进行排序,再处理
for (int i = 0; i < num; i++)
{
times[i] = 1;
qsort(deal[i].count, deal[i].cnum, sizeof(int), cmp);
qsort(deal[i].ctype, deal[i].cnum, sizeof(char), cmp2);
for (int j = 0; j < deal[i].cnum; j++)
{
deal[i].jishu[deal[i].count[j]]++;
}
for (int m = 0; m < 11; m++)
{
if (deal[i].jishu[m] == 4)
{
flag = 4;
break;
}
else if (deal[i].jishu[m] == 3)
{
for (int p = 0; p < 11; p++)
{
if (deal[i].jishu[p] == 2)
{
flag = 5;
break;
}
flag = 7;
}
}
else if (deal[i].jishu[m] == 2)
{
for (int p = 0; p < 11; p++)
{
if (deal[i].jishu[p] == 3)
{
flag = 5;
break;
}
else if (deal[i].jishu[p] == 2 && p != m)
{
flag = 8;
break;
}
flag = 9;
}
}
//连续性判断
if ((deal[i].count[4] - deal[i].count[3] == deal[i].count[3] - deal[i].count[2]) && (deal[i].count[3] - deal[i].count[2] == deal[i].count[2] - deal[i].count[1]) && (deal[i].count[2] - deal[i].count[1] == deal[i].count[1] - deal[i].count[0]))
{
if (deal[i].ctype[0] == deal[i].ctype[deal[i].cnum - 1])
flag = 2;
else
flag = 6;
}
}
if (deal[i].count[0] == deal[i].count[deal[i].cnum - 1] && deal[i].cnum == 5)
times[i] = 15000;
else if (flag == 2)
times[i] = 8000;
else if (deal[i].ctype[0] == deal[i].ctype[deal[i].cnum - 1] && deal[i].cnum == 5)
times[i] = 300;
else if (flag == 4)
times[i] = 150;
else if (flag == 5)
times[i] = 40;
else if (flag == 6)
times[i] = 20;
else if (flag == 7)
times[i] = 6;
else if (flag == 8)
times[i] = 4;
else if (flag == 9)
times[i] = 2;
}
for (int i = 0; i < num; i++)
{
printf("%d\n", times[i]);
}
return 0;
} 
腾讯公司福利 1148人发布