码迷,mamicode.com
首页 > 其他好文 > 详细

codechef The Lead Game 题解

时间:2014-05-03 16:15:33      阅读:296      评论:0      收藏:0      [点我收藏+]

标签:style   blog   class   code   ext   color   

The game of billiards involves two players knocking 3 balls around
on a green baize table. Well, there is more to it, but for our
purposes this is sufficient.

The game consists of several rounds and in each round both players
obtain a score, based on how well they played. Once all the rounds
have been played, the total score of each player is determined by
adding up the scores in all the rounds and the player with the higher
total score is declared the winner.

The Siruseri Sports Club organises an annual billiards game where
the top two players of Siruseri play against each other. The Manager
of Siruseri Sports Club decided to add his own twist to the game by
changing the rules for determining the winner. In his version, at the
end of each round the leader and her current lead are calculated. Once
all the rounds are over the player who had the maximum lead at the
end of any round in the game is declared the winner.

Consider the following score sheet for a game with 5 rounds:

    Round     Player 1       Player 2

      1             140                 82
      2              89                 134 
      3              90                 110 
      4              112              106
      5              88                  90 

The total scores of both players, the leader and the lead after
each round for this game is given below:

    Round      Player 1       Player 2     Leader     Lead

      1               140           	 82        Player 1     58
      2               229           	216       Player 1     13
      3               319           	326       Player 2      7
      4               431           	432       Player 2      1
      5               519           	522       Player 2      3

The winner of this game is Player 1 as he had the maximum lead (58
at the end of round 1) during the game.


根据规则计算最后的胜者是谁:当前局结束时候领先分数最多者胜。

本题依然是输入数据十分大。算法不难,处理好输入数据就行。都是使用fread和getchar比较稳妥了。

#include <stdio.h>

int TheLeadGame()
{
	int T, n, lead = 0, leader, a = 0, b = 0, c = 0, d = 0;
	scanf("%d\n", &T);
	char buffer[100000];
	bool one = true;
	if ((n = fread(buffer, 1, 100000, stdin)) > 0)
	{
		for (int i = 0; i < n; i++)
		{
			if (one && buffer[i] != ‘ ‘ && buffer[i] != ‘\n‘) 
				a = a * 10 + buffer[i] - ‘0‘;
			else if (buffer[i] != ‘ ‘ && buffer[i] != ‘\n‘)
				b = b * 10 + buffer[i] - ‘0‘;

			if (buffer[i] == ‘ ‘) one = false;
			else if (buffer[i] == ‘\n‘ || i + 1 == n)
			{
				one = true;
				c += a;//player1 total scores
				a = 0;//reset
				d += b;//player2 total scores 
				b = 0;//reset

				if (c < d)//calculate
				{
					if ( d - c > lead )
					{
						lead = d - c;
						leader = 2;
					}
				}
				else
				{
					if ( c - d > lead )
					{
						lead =  c - d;
						leader = 1;
					}
				}
			}			
		}
	}
	printf("%d %d\n", leader, lead);
	return 0;
}




codechef The Lead Game 题解,布布扣,bubuko.com

codechef The Lead Game 题解

标签:style   blog   class   code   ext   color   

原文地址:http://blog.csdn.net/kenden23/article/details/24905375

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!