足球赛确定淘汰赛名单-map<string, int>问题
2017-09-16 19:45
323 查看
科大讯飞笔试题:
比赛规则:
1、参赛队伍为n支, n为偶数。
2、入围淘汰赛队伍为n/2支。
3、按积分排名,胜一场积3分,平一场积1分, 负一场积0分,积分相同按净胜球排名,净胜球相同按进球数排名。
随后n行为球队名字
随后n*(n-1)/2行为赛事开展情况,格式为 name1-name2 num1:num2
输出n/2行,按字母排序的进入淘汰赛名单
输出
题意
足球赛确定淘汰赛名单比赛规则:
1、参赛队伍为n支, n为偶数。
2、入围淘汰赛队伍为n/2支。
3、按积分排名,胜一场积3分,平一场积1分, 负一场积0分,积分相同按净胜球排名,净胜球相同按进球数排名。
输入输出
第一行为一个整数n,参赛队伍数随后n行为球队名字
随后n*(n-1)/2行为赛事开展情况,格式为 name1-name2 num1:num2
输出n/2行,按字母排序的进入淘汰赛名单
示例
输入4 A B C D A-B 1:1 A-C 2:2 A-D 1:0 B-C 1:0 B-D 0:3 C-D 0:3
输出
A D
程序如下
暂时未考虑积分相同情况,可再定义两个容器,分别用于记录净胜球数及进球数。#include<iostream> #include<string> #include <map> #include <vector> using namespace std; vector<string> ans; int main() { int n,i, j,len, n1, n2, n3, nu1, nu2; string str, temp, na, nb, num1, num2; vector<int> vec; map<string, int> mymap; map<string, int>::iterator it; char ch; while(cin >> n){ vec.clear(); mymap.clear(); for(i = 0; i < n; i++){ cin >> temp; mymap.insert(pair<string, int>(temp, 0)); } ch = cin.get(); for(i = 0; i < n*(n-1)/2; i++){ temp = ""; while(ch = cin.get()){ if(ch == '\n') break; temp += ch; } len = temp.length(); //开始记录比赛情况 for(j = 0; j< len; j++){ if(temp[j] == '-'){ n1 = j; na = temp.substr(0, j); //比赛的第一支队伍 } if(temp[j] == ' '){ n2 = j; nb = temp.substr(n1+1, n2-n1-1); //比赛的第二支队伍 } if(temp[j] == ':'){ n3 = j; num1 = temp.substr(n2+1, n3-n2-1); //第一支队伍的进球数 } } num2 = temp.substr(n3+1, len-n3-1); //第二支队伍的进球数 nu1 = nu2 = 0; for(j = 0; j < num1.length(); j++){ nu1 = nu1*10+(num1[j]-'0'); } for(j = 0; j < num2.length(); j++){ nu2 = nu2*10+(num2[j]-'0'); } if(nu1>nu2){ it = mymap.find(na); //胜一场积3分 it->second += 3; }else if(nu1 == nu2){ it = mymap.find(nb); it->second += 1; //平一场积1分 it = mymap.find(na); it->second += 1; }else{ it = mymap.find(nb); it->second += 3; } } for(it = mymap.begin(); it!= mymap.end(); it++){ //积分排序 vec.push_back(it->second); } sort(vec.begin(), vec.end()); for(it = mymap.begin(); it!= mymap.end(); it++){ if(it->second>vec[n/2-1]){ ans.push_back(it->first); //输出积分高的一半队伍 } } } for(i = 0; i < ans.size(); i++){ cout << ans[i] <<"\n"; } return 0; }
相关文章推荐
- map<string,int>
- 【问题解决】Redis存储Hash-Map<String,Object>时无法序列化问题
- ACM-ICPC国际大学生程序设计竞赛北京赛区(2016)网络赛 C.A Simple Job map<string, map<string, int> > 、字符串单词词组的处理
- 【Android】 Bundle里边存放List<Map<String,Bitmap>>的问题
- 笔记 freemark list标签迭代Map<Map<String,Object>集合排序问题
- List<Map<String, String>> 合并map的字段数据问题
- Mongo的morphia读取Map<String, List<Object>>类型数据的问题
- java中map<string,int>
- Gson 反序列化Map<String, Object>类型的小问题
- 获取List<Map<String,Object>> list中的值得问题
- new List<Map<String,String>> 问题
- mybatis Map<String,Object>params 传参 0 与 判断条件 !='' 问题
- SpringMVC中controller中方法返回类型为ResponseEntity<String>乱码的问题
- Android中List与Map<String,Object>及SimpleAdapter用来存储数据并展示出来的联合用法
- struts1、struts2 遍历map<String,List<TItem>>
- 取出List<Map<String,Object>>里面Map的key:value值
- javaBean与Map<String,Object>相互转换
- jsp遍历List<Map<String,Object>>,输出<Map<String,Objectr>>
- 有关List<Map<String, Object>>解析
- 遍历List<Map<String,Object>>