【FOJ】Problem 1065 Alpha Centauri Tennis(WA,未通过)

Problem 1065 Alpha Centauri Tennis.

题意

  • 好大一段题目。
    外星人打网球,counting the number of balls/games/sets won by a playe.
    某个人不懂外星语,仅仅记下了每一球的胜利者,判断比赛最终的胜利者
    RULES FOR WINNING A GAME
    当P赢下一球时:
    如果P有3分,其他人都不超过2分,P胜
    如果P有4分,P胜
    如果其他人有4分,那个人失去1分
    P得1分
    RULES FOR WINNING A SET
    第一个达成以下条件:
    本set中赢了6场game
    比其他人多赢2场game
    RULES FOR WINNING A MATCH
    第一个赢得至少3场set的参赛者赢得match
    没有被其他玩家赢得一场game的set是完成,算赢得2场set
  • 输入:
    多行,每行对应一场比赛。
    the number of players N (2 <= N <= 26 )
    a string S (长度1-1,000,000,大写字母组成)
  • 输出:
    赢的人的字母

思路

三个数组,game[],set[],match[],分别用来计分。
每次读入数据统计,然后按题意规则判断即可。

笔记

  • 我好菜啊只能按着规则敲还WA,我放弃,哪天闲着没事干再敲吧。

代码

#include<cstdio>
#include<string.h>
char s[1000010];
int ball[26], game[26], set[26];
int n, flag, player;

void yeah(int player){
	int flag = 0;
	for(int k=0; k<n; k++){
		if(k!=player && game[k]!=0){
			flag = 1;
			break;
		}
	}
	if(flag==0)
		set[player]++;
}

int main(){
	while(scanf("%d", &n) != EOF){
		getchar();
		gets(s);
		memset(game, 0, sizeof(game));
		memset(set, 0, sizeof(set));
		memset(ball, 0, sizeof(ball));
		for(int i=0; i<strlen(s); i++){
			player = s[i]-'A';
			//RULES FOR WINNING A GAME
			if(ball[player]==3){
				flag = 0;
				for(int k=0; k<n; k++){
					if(k!=player && ball[k]>2){
						flag = 1;
						break;
					}
				}
				if(flag==0){
					game[player]++;
					memset(ball, 0, sizeof(ball));
				}
			}
			if(ball[player]==4){
				game[player]++;
				memset(ball, 0, sizeof(ball));
			}
			for(int k=0; k<n; k++){
				if(k!=player && ball[k]==4)
					ball[k]--;
			}
			ball[player]++;
			//RULES FOR WINNING A SET
			if(game[player]==6){
				set[player]++;
				yeah(player);
				memset(game, 0, sizeof(game));
			}
			flag = 0;
			for(int k=0; k<n; k++){
				if(k!=player && game[player]-game[k]<2){
					flag = 1;
					break;
				}
			}
			if(flag==0 && game[player]!=6){
				set[player]++;
				yeah(player);
				memset(game, 0, sizeof(game));
			}
			if(set[player]>=3)
				break;
		}
		printf("%c\n", player+'A');
	}
	return 0;
}
发布了28 篇原创文章 · 获赞 0 · 访问量 330

猜你喜欢

转载自blog.csdn.net/qq_44531167/article/details/105127188
今日推荐