#正常来讲第三轮不会出现6:9这个比分,因为早在6:8的时候已经结束了 ##但是有的题解代码(没看全部)认为6:9是da ###这一点使我非常困惑,以下是我的代码,试图解决这一问题
#include <stdio.h>
#include <string.h>
#include <math.h>
char name1[50], name2[50];
char temp[50];//读入的字符串
int record[5];//记录胜负场次
int score[20];
int max(int a, int b){
if(a > b) return a;
else return b;
}
int min(int a, int b){
if(a > b) return b;
else return a;
}
int main(){
scanf("%s", name1);
getchar();
scanf("%s", name2);
int flag = 0;//federer
if(strncmp(name1, "federer", 7) == 0) flag = 1;
else if(strncmp(name2, "federer", 7) == 0) flag = 2;
int n;
scanf("%d", &n);
getchar();
for(int i = 0;i < n;i++){
memset(temp, 0, sizeof(temp));
gets(temp);
memset(score, 0, sizeof(score));
int p = 0;//bool false
int len = strlen(temp);
int q = 0;//score 的指针
for(int j = 0;j < len;j++){
if(p == 0 && temp[j] >= '0' && temp[j] <= '9'){
p = 1;//bool true
score[++q] = temp[j] - '0';
}
else if(p == 1 && temp[j] >= '0' && temp[j] <= '9'){
score[q] = score[q] * 10 + (temp[j] - '0');
}
else p = 0;//读到冒号或空格
}
if(q > 6){//三轮后比赛未结束
//发现这里q++不行,必须是++q
puts("ne");
continue;
}
memset(record, 0, sizeof(record));
if(score[1] == 6 && score[1] - score[2] >= 2) record[0] = 1;
else if(score[2] == 6 && score[2] - score[1] >= 2) record[0] = 0;
else if((score[1] == 7 && score[2] == 6) || (score[1] == 7 && score[2] == 5))record[0] = 1;
else if((score[1] == 6 && score[2] == 7) || (score[1] == 5 && score[2] == 7))record[0] = 0;
else{
puts("ne");
continue;
}
if(score[3] == 6 && score[3] - score[4] >= 2) record[1] = 1;
else if(score[4] == 6 && score[4] - score[3] >= 2) record[1] = 0;
else if((score[3] == 7 && score[4] == 6) || (score[3] == 7 && score[4] == 5)) record[1] = 1;
else if((score[3] == 6 && score[4] == 7) || (score[3] == 5 && score[4] == 7))record[1] = 0;
else{
puts("ne");
continue;
}
int w = 0;
if(record[0] == 1 && record[1] == 1) w = 1;
else if(record[0] == 0 && record[1] == 0) w = 2;
if(w != 0 && score[5] != 0){
puts("ne");
continue;
}
else if((flag != 0 && w == 0) || (flag != w && flag != 0 && w != 0)){
puts("ne");
continue;
}
else if(w == 1 || w == 2){
puts("da");
continue;
}
int a = max(score[5], score[6]);
int b = min(score[5], score[6]);
if(a > 6 && a - b == 2){
puts("da");
continue;
}
else if(a == 6 && a - b >= 2){
puts("da");
continue;
}
else{
puts("ne");
continue;
}
}
return 0;
}