奥运排序
来源:互联网 发布:linux系统初始网络配置 编辑:程序博客网 时间:2024/04/28 08:14
- 题目描述:
按要求,给国家进行排名。
- 输入:
- 有多组数据。
第一行给出国家数N,要求排名的国家数M,国家号从0到N-1。
第二行开始的N行给定国家或地区的奥运金牌数,奖牌数,人口数(百万)。
接下来一行给出M个国家号。
- 输出:
- 排序有4种方式: 金牌总数 奖牌总数 金牌人口比例 奖牌人口比例
对每个国家给出最佳排名排名方式 和 最终排名
格式为: 排名:排名方式
如果有相同的最终排名,则输出排名方式最小的那种排名,对于排名方式,金牌总数 < 奖牌总数 < 金牌人口比例 < 奖牌人口比例
如果有并列排名的情况,即如果出现金牌总数为 100,90,90,80.则排名为1,2,2,4.
每组数据后加一个空行。
- 样例输入:
4 44 8 16 6 24 8 22 12 40 1 2 34 28 10 18 11 28 12 38 13 40 3
- 样例输出:
1:31:12:11:21:11:1
- ------------------------------
- 解析题意:
- 只需要排几个序。最后的那一行如 0 3 只排0和3这一索引
- 就是排名【按最好成绩来排名】+第二次排名。第二次排名,输出最小的,最小的顺序为:排名方式,金牌总数【1】 < 奖牌总数【2】 < 金牌人口比例【3】 < 奖牌人口比例【4】
import java.util.Scanner;public class Main { public static void main(String args[]) { Scanner cin = new Scanner(System.in); int N, M;/*第一行给出国家数N,要求排名的国家数M,具体序号是最后一行*/ while (cin.hasNext()) { N = cin.nextInt(); M = cin.nextInt(); Contry[] contries = new Contry[N]; Contry[] waitingContries = new Contry[M]; for (int i = 0; i < N; i++) { contries[i] = new Contry(); contries[i].setName(i); contries[i].setGold(cin.nextInt());// 金牌数 contries[i].setMedal(cin.nextInt());//奖牌数 contries[i].setPopulation(cin.nextInt());//人口数 double GDP = contries[i].getGold() * 1.0 / contries[i].getPopulation(); //金牌平均数 double MDP = contries[i].getMedal() * 1.0 / contries[i].getPopulation(); //奖牌平均数 contries[i].setGDP(GDP); contries[i].setMDP(MDP); } for (int i = 0; i < M; i++) { waitingContries[i] = new Contry(); waitingContries[i] = contries[cin.nextInt()];//要排名的每一家赋值 } for (int i = 0; i < M; i++) { //两个for循环,依次比较 // 金牌数排名 waitingContries[i].CRanking = 1; for (int j = 0; j < M; j++) { if (waitingContries[i].getGold() < waitingContries[j].getGold()) { waitingContries[i].CRanking++; //如果是最大,就是初始化的1了; } } waitingContries[i].Ranking = waitingContries[i].CRanking; waitingContries[i].RankingType = 1; // 奖牌数排名 waitingContries[i].CRanking = 1; for (int j = 0; j < M; j++) { if (waitingContries[i].getMedal() < waitingContries[j].getMedal()) { waitingContries[i].CRanking++; } } if (waitingContries[i].Ranking > waitingContries[i].CRanking) { waitingContries[i].Ranking = waitingContries[i].CRanking; //采用最小奖牌数排名 waitingContries[i].RankingType = 2; } // 金牌人口比例排名 waitingContries[i].CRanking = 1; for (int j = 0; j < M; j++) { if (waitingContries[i].getGDP() < waitingContries[j].getGDP()) { waitingContries[i].CRanking++; } } if (waitingContries[i].Ranking > waitingContries[i].CRanking) { waitingContries[i].Ranking = waitingContries[i].CRanking; //采用最小金牌人口比例排名 waitingContries[i].RankingType = 3; } // 奖品人口比例排名 waitingContries[i].CRanking = 1; for (int j = 0; j < M; j++) { if (waitingContries[i].getMDP() < waitingContries[j].getMDP()) { waitingContries[i].CRanking++; } } if (waitingContries[i].Ranking > waitingContries[i].CRanking) { waitingContries[i].Ranking = waitingContries[i].CRanking; waitingContries[i].RankingType = 4; //采用最小奖牌人口比例排名 } // 输出结果 System.out.println(waitingContries[i].Ranking + ":" + waitingContries[i].RankingType); } //每组数据后加一个空行。 System.out.println(); } } public static class Contry { private int Name; private int Gold; private int Medal; private int Population; private double GDP; private double MDP; private int Ranking; private int CRanking; private int RankingType; public int getName() { return Name; } public void setName(int name) { Name = name; } public int getGold() { return Gold; } public void setGold(int gold) { Gold = gold; } public int getMedal() { return Medal; } public void setMedal(int medal) { Medal = medal; } public int getPopulation() { return Population; } public void setPopulation(int population) { Population = population; } public double getGDP() { return GDP; } public void setGDP(double gDP) { GDP = gDP; } public double getMDP() { return MDP; } public void setMDP(double mDP) { MDP = mDP; } public int getRanking() { return Ranking; } public void setRanking(int ranking) { Ranking = ranking; } public int getRankingType() { return RankingType; } public void setRankingType(int rankingType) { RankingType = rankingType; } }}
0 0
- 奥运排序
- hdu3789之奥运排序
- 1007.奥运排序问题
- 1007 奥运排序问题
- 奥运排序问题
- 题目1007:奥运排序问题
- 题目1007:奥运排序问题
- hdu 3789 奥运排序问题
- 题目1007:奥运排序问题
- 题目1007:奥运排序问题
- 题目1007:奥运排序问题
- 题目1007:奥运排序问题
- 题目1007:奥运排序问题
- hdoj 3789 奥运排序问题
- hdoj 3789 奥运排序问题
- hdu 3789 奥运排序问题
- 题目1007:奥运排序问题
- 题目1007:奥运排序问题
- RSA 非对称加解密算法
- Ubuntu 设置环境变量
- Xcode6中自动布局autolayout和sizeclass的使用
- 在uboot里面添加环境变量使用run来执行
- ADF 文章收藏
- 奥运排序
- 看看c样式printf的压栈顺序
- SharePoint 2013的社交功能之(一)社区网站(Community Site)
- C/C++--strlen函数实现
- USACO--3.1Contact
- ios测试-(一)使用XCTest进行单元测试
- 在代码中实现Run Logic逻辑
- 远离glPushMatrix glLoadIdentity glPopMatrix
- org.apache.hadoop.hdfs.server.namenode.LeaseExpiredException: org.apache.hadoop.hdfs.server.namenode