【GRYZ2015】足球联赛
2016-07-28 09:06
260 查看
【问题描述】
巴蜀中学新一季的足球联赛开幕了。足球联赛有 n只球队参赛,每赛季,每只球队要与其他球队各赛两场,主客各一场,赢一场得 3 分,输一场不得分,平局两只队伍各得一分。
英勇无畏的小鸿是机房的主力前锋,她总能在关键时刻踢出一些匪夷所思的妙球。但是很可惜,她过早的燃烧完了她的职业生涯,不过作为一个能够 Burning 的 girl,她的能力不止如此,她还能预测这个赛季所有球队的比赛结果。
虽然她能准确预测所有比赛的结果,但是其实她不怎么厉害,Mr.Gao 上数学课时她总是在 sleep,因此她的脑里只有整数没有实数,而且,她只会 10 以内非负整数的加法运算,因此她只有结果却无法知道谁会获得联赛的冠军。
小鸿想给冠军队伍的所有队员一个拥抱,所以她把计算结果的任务交给了你:现在,给你一个 n*n 的矩阵表示比赛情况。第 i 行第 j 列的字母表示在第 i 只队伍 在主场迎战第 j 只队伍的比赛情况,W 表示主队赢,L 表示主队输,D 表示平局。现在需要你给出最后能得到小鸿拥抱的队伍编号,如有多支队伍分数最高,按字典序输出编号。
【输入格式】
第一行一个整数 n。
接下来 n 行,每行 n 个字符,表示输赢情况。第 i 行第 i 列为 - ,因为一只队伍不可能与自己比赛。
【输出格式】
输出得分最高的队伍编号。如有多个在一行中输出,用一个空格分开。
【输入样例】
【样例1】
3
-WW
W-W
WW-
【样例2】
5
-DWWD
L-WLL
DD-WD
DDL-L
DDLL-
【输出样例】
【样例1】
1 2 3
【样例2】
1
【数据范围】
对于 40%的数据,满足 N<=20
对于 100%的数据,满足 N<=50
题目大意:给出一个字符矩阵,要求在这个字符矩阵中统计每个球队最后的得分。然后输出得分最高的球队编号。
解:设一个数组c记录各队分数,读入字符矩阵,用两重循环i,j顺序扫描整个矩阵,扫描到的字符是W时则c[i]+=3,由于是主场分数且任意两队要赛2次,所以扫描到L时c[j]+=3(易错点),扫描到D时c[i]++,c[j]++。然后在c中顺序找出最大分数和对应的球队编号。
知识点:字符数组的处理。
巴蜀中学新一季的足球联赛开幕了。足球联赛有 n只球队参赛,每赛季,每只球队要与其他球队各赛两场,主客各一场,赢一场得 3 分,输一场不得分,平局两只队伍各得一分。
英勇无畏的小鸿是机房的主力前锋,她总能在关键时刻踢出一些匪夷所思的妙球。但是很可惜,她过早的燃烧完了她的职业生涯,不过作为一个能够 Burning 的 girl,她的能力不止如此,她还能预测这个赛季所有球队的比赛结果。
虽然她能准确预测所有比赛的结果,但是其实她不怎么厉害,Mr.Gao 上数学课时她总是在 sleep,因此她的脑里只有整数没有实数,而且,她只会 10 以内非负整数的加法运算,因此她只有结果却无法知道谁会获得联赛的冠军。
小鸿想给冠军队伍的所有队员一个拥抱,所以她把计算结果的任务交给了你:现在,给你一个 n*n 的矩阵表示比赛情况。第 i 行第 j 列的字母表示在第 i 只队伍 在主场迎战第 j 只队伍的比赛情况,W 表示主队赢,L 表示主队输,D 表示平局。现在需要你给出最后能得到小鸿拥抱的队伍编号,如有多支队伍分数最高,按字典序输出编号。
【输入格式】
第一行一个整数 n。
接下来 n 行,每行 n 个字符,表示输赢情况。第 i 行第 i 列为 - ,因为一只队伍不可能与自己比赛。
【输出格式】
输出得分最高的队伍编号。如有多个在一行中输出,用一个空格分开。
【输入样例】
【样例1】
3
-WW
W-W
WW-
【样例2】
5
-DWWD
L-WLL
DD-WD
DDL-L
DDLL-
【输出样例】
【样例1】
1 2 3
【样例2】
1
【数据范围】
对于 40%的数据,满足 N<=20
对于 100%的数据,满足 N<=50
题目大意:给出一个字符矩阵,要求在这个字符矩阵中统计每个球队最后的得分。然后输出得分最高的球队编号。
解:设一个数组c记录各队分数,读入字符矩阵,用两重循环i,j顺序扫描整个矩阵,扫描到的字符是W时则c[i]+=3,由于是主场分数且任意两队要赛2次,所以扫描到L时c[j]+=3(易错点),扫描到D时c[i]++,c[j]++。然后在c中顺序找出最大分数和对应的球队编号。
知识点:字符数组的处理。
#include<cstdio> #include<iostream> #include<cstring> #include<queue> #include<algorithm> #define maxn 55 using namespace std; char mat[maxn][maxn]; int n,c[maxn]; int main() { //freopen("my.in","r",stdin); //freopen("my.out","w",stdout); scanf("%d",&n); for(int i=0;i<n;i++) scanf("%s",mat[i]); for(int i=0;i<n;i++) for(int j=0;j<n;j++) { if(mat[i][j]=='W'){c[i]+=3;} if(mat[i][j]=='L'){c[j]+=3;} if(mat[i][j]=='D'){c[i]++;c[j]++;} } int maxc=0; for(int i=0;i<n;i++) maxc=max(maxc,c[i]); for(int i=0;i<n;i++)if(c[i]==maxc) printf("%d ",i+1); return 0; }
相关文章推荐
- UVA 12299 RMQ with Shifts
- 整理 iOS 9 适配中出现的坑
- ubuntu 开启自启动配置
- VBA操作提取出sql
- Linux命令之ar - 创建静态库.a文件和动态库.so
- 不依赖于Activity的Android全局悬浮窗的实现
- IoT learn & mark
- SDUT 2142 数据结构实验之图论二:基于邻接表的广度优先搜索遍历
- #500-5 集合框架 (初识)
- [李景山php]每天laravel-20161001|ValidationServiceProvider.php
- uva 11992 Fast Matrix Operations
- Android开源框架xUtils 说明以及使用
- Spring4----Bean之间的关系
- English morning 1---SSTMC word of this week about preposition "On"
- 用GDB调试程序1
- 项目的难点
- HDU-4101
- OSG缺少zlib.dll解决方法
- [李景山php]每天laravel-20161001|ValidationServiceProvider.php
- 技术管理的感悟