90,WA#1

P1148 拱猪计分

me too ```cpp #include <bits/stdc++.h> using namespace std; int status,player[4][20][2],result[10000][4],number,change[14] = {0,-50,-2,-3,-4,-5,-6,-7,-8,-9,-10,-20,-30,-40}; void print_result() { int i,j; for(i = 0;i < number;i++) { for(j = 0;j < 4;j++) { if(result[i][j] > 0) printf("+"); printf("%d ",result[i][j]); } printf("\n"); } } bool check(int card[2],char color,int ds) { return card[0] == color && card[1] == ds; } int change_score(int card[2]) { if(card[0] == 'H') return change[card[1]]; if(check(card,'S',12)) return -100; if(check(card,'D',11)) return 100; return 0; } void chuli() { int i,j,jishu,c10_status = 0,yz_count = 0; for(i = 0,jishu = 0;i < 4;i++,jishu = 0,c10_status = 0,yz_count = 0) { for(j = 1;j <= player[i][0][0];j++) { result[number][i] += change_score(player[i][j]); if(player[i][j][0] == 'H') jishu++; if(check(player[i][j],'S',12)) yz_count++; if(check(player[i][j],'D',11)) yz_count++; if(check(player[i][j],'C',10)) c10_status = 1; } if(jishu == 13) { result[number][i] += 394; if(yz_count == 2) { result[number][i] += 500; if(c10_status) result[number][i] += 300; } else if(c10_status) result[number][i] *= 2; } if(c10_status) { if(player[i][0][0] > 1) result[number][i] *= 2; else result[number][i] = 50; } } } void read_player(int player_number) { int i; char j; scanf("%d", &player[player_number][0][0]); for(i = 1;i <= player[player_number][0][0];i++) { for(j = getchar();j == ' ' || j == '\n';j = getchar()); player[player_number][i][0] = j; scanf("%d",&player[player_number][i][1]); } status = max(status,player[player_number][0][0]); } int main() { int j; do { status = 0; for(j = 0;j < 4;j++) read_player(j); if(status) { chuli(); number++; } }while(status); print_result(); return 0; } ```
by Jason331 @ 2024-01-30 21:49:08


@[Tsuki091117](/user/1069816) \#1第一个测试点就是输出1000,你这直接判断16就跳出去了,后面3个0就不输入了嘛。
by Chenyufeng040525 @ 2024-03-16 21:17:07


|