为啥第二题过不了
求问大佬们为啥我的第二题死活过不了
我感觉完全对的啊
#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; }