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

UESTC OJ 25

时间:2014-07-03 19:41:28      阅读:344      评论:0      收藏:0      [点我收藏+]

标签:style   blog   color   数据   os   for   

Input

输入包含多组数据。每组数据的第一行包含一个整数N(1N18),表示双方总共罚了多少个点球,N=0表示输入结束。随后有N行,每行是一个如下形式的字符串:

XXXX good:表示这个点球罚进

或者XXXX no good:表示这个点球没有罚进

其中XXXX表示球员名字(全部由字母和空格组成,保证不会出现歧义)

每一行保证不超过100个字符。

XXXXgood以及XXXXnonogood之间保证有且只有1个空格。

goodno good都是小写。本题是大小写相关的。

数据不保证点球大战一定结束,也不保证在结束以后立即结束这组数据(即:不用判断点球大战是否结束,只用把罚进的点球往比分上加即可)。

Output

对每组数据,输出一个比分板。一个点球如果罚进,则在对应的地方标上O,如果没有进则标上X。先罚球的队伍的信息在上面,后罚的在下面。最右边标上两队的比分。具体格式参考样例输出。注意如果一轮点球只罚了一个,则后面那个点球对应的地方写上-

解决思路

这个题解决思路倒是很简单,主要要多考虑两个因素

(1)如果一个人名最后两位为no,例如abcno good,则应该

(2)如果一个人名中包括no good,例如 abc no good good,则应该是点球罚进。

因此解决思路是判断输入长度是否大于8,小于8肯定是进了,大于8则取字符串最后8个字符的子串与" no good"进行比较,若相等则点球未罚进,否则该点球罚进。

代码如下:

#include <iostream>
#include <string>
using namespace std;

int main()
{
    int testCases, lines, firstTeamGoal, secondTeamGoal;
    string goalInfo, firstTeam, secondTeam;
    cin >> testCases;
    
    while (testCases != 0){
        lines = 0;
        firstTeam = secondTeam = "";
        firstTeamGoal = secondTeamGoal = 0;
        
        getline(cin, goalInfo);

        while (lines < testCases){
            
            getline(cin, goalInfo);
            int len = goalInfo.size();
            
            if (len >= 8){
                if (goalInfo.substr(len - 8, 8) == " no good"){
                    if (lines % 2 == 0)
                        firstTeam += "X ";
                    else
                        secondTeam += "X ";
                }
                else{
                    if (lines % 2 == 0){
                        firstTeamGoal++;
                        firstTeam += "O ";
                    }
                    else{
                        secondTeamGoal++;
                        secondTeam += "O ";
                    }
                }
            }
            else{
                if (lines % 2 == 0){
                    firstTeamGoal++;
                    firstTeam += "O ";
                }
                else{
                    secondTeamGoal++;
                    secondTeam += "O ";
                }
            }
            lines++;
        }
        if (testCases % 2 == 1)
            secondTeam += "- ";
        
        for (int i = 0, len = (testCases + 1) / 2; i < len; i++)
            cout << i+1 << " ";
        cout << "Score" << endl << firstTeam << firstTeamGoal << endl << secondTeam <<secondTeamGoal<< endl;
        cin >> testCases;    
    }
}

 

UESTC OJ 25,布布扣,bubuko.com

UESTC OJ 25

标签:style   blog   color   数据   os   for   

原文地址:http://www.cnblogs.com/rocky526/p/3821259.html

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