V-22
来源:互联网 发布:知世鼓励小狼 编辑:程序博客网 时间:2024/04/24 14:25
Jim is fond of reading books, and he has so many books that sometimes it's hard for him to manage them. So he is asking for your help to solve this problem.
Only interest in the name, press year and price of the book, Jim wants to get a sorted list of his books, according to the sorting criteria.
Input
The problem consists of multiple test cases.
In the first line of each test case, there's an integer n that specifies the number of books Jim has. n will be a positive integer less than 100. The next n lines give the information of the books in the format Name Year Price. Name will be a string consisting of at most 80 characters from alphabet, Year and Price will be positive integers. Then comes the sorting criteria, which could be Name, Year or Price.
Your task is to give out the book list in ascending order according to the sorting criteria in non-ascendent order.
Note: That Name is the first criteria, Year is the second, and Price the third. It means that if the sorting criteria is Year and you got two books with the same Year, you'd sort them according to their Name. If they equals again, according to their Price. No two books will be same in all the three parameters.
Input will be terminated by a case with n = 0.
Output
For each test case, output the book list, each book in a line. In each line you should output in the format Name Year Price, the three parameters should be seperated by just ONE space.
You should output a blank line between two test cases.
Sample Input
3
LearningGNUEmacs 2003 68
TheC++StandardLibrary 2002 108
ArtificialIntelligence 2005 75
Year
4
GhostStory 2001 1
WuXiaStory 2000 2
SFStory 1999 10
WeekEnd 1998 5
Price
0
Sample Output
TheC++StandardLibrary 2002 108
LearningGNUEmacs 2003 68
ArtificialIntelligence 2005 75
GhostStory 2001 1
WuXiaStory 2000 2
WeekEnd 1998 5
Only interest in the name, press year and price of the book, Jim wants to get a sorted list of his books, according to the sorting criteria.
Input
The problem consists of multiple test cases.
In the first line of each test case, there's an integer n that specifies the number of books Jim has. n will be a positive integer less than 100. The next n lines give the information of the books in the format Name Year Price. Name will be a string consisting of at most 80 characters from alphabet, Year and Price will be positive integers. Then comes the sorting criteria, which could be Name, Year or Price.
Your task is to give out the book list in ascending order according to the sorting criteria in non-ascendent order.
Note: That Name is the first criteria, Year is the second, and Price the third. It means that if the sorting criteria is Year and you got two books with the same Year, you'd sort them according to their Name. If they equals again, according to their Price. No two books will be same in all the three parameters.
Input will be terminated by a case with n = 0.
Output
For each test case, output the book list, each book in a line. In each line you should output in the format Name Year Price, the three parameters should be seperated by just ONE space.
You should output a blank line between two test cases.
Sample Input
3
LearningGNUEmacs 2003 68
TheC++StandardLibrary 2002 108
ArtificialIntelligence 2005 75
Year
4
GhostStory 2001 1
WuXiaStory 2000 2
SFStory 1999 10
WeekEnd 1998 5
Price
0
Sample Output
TheC++StandardLibrary 2002 108
LearningGNUEmacs 2003 68
ArtificialIntelligence 2005 75
GhostStory 2001 1
WuXiaStory 2000 2
WeekEnd 1998 5
SFStory 1999 10
题意描述:
对于给定的书名 年份 价格 ,按照要求进行对书排序。
解题细节:
注意有相等时的结果,以名 年份 价格 依次排序运。用结构体,用向量来存储结构体,重载运算符,进行比较。
代码:
#include <bits/stdc++.h> using namespace std; struct book{ string name; int year; int price;}; bool cmpName(const book &a, const book &b){ if(a.name != b.name) return a.name < b.name; else if(a.year != b.year) return a.year < b.year; else return a.price < b.price; } bool cmpYear(const book &a, const book &b){ if(a.year != b.year) return a.year < b.year; else if(a.name != b.name) return a.name < b.name; else return a.price < b.price;}bool cmpPrice(const book &a, const book &b){ if(a.price != b.price) return a.price < b.price; else if (a.name != b.name) return a.name < b.name; else return a.year < b.year;} int main(){ int n; vector<book> v; book bk; string sorting; int line = 0; while(cin >> n){ if(n == 0) break; v.clear(); line++; for(int i = 0; i < n; i++){ cin >> bk.name >> bk.year >> bk.price; v.push_back(bk); } cin >> sorting; if(sorting == "Name") sort(v.begin(), v.end(), cmpName); else if (sorting == "Year") sort(v.begin(), v.end(), cmpYear); else sort(v.begin(), v.end(), cmpPrice); if(line != 1) cout << endl; for(int i = 0; i < n; i++) cout << v[i].name << " " << v[i].year << " " << v[i].price << endl; } return 0;}心得:
此题较为复杂,应该仔细读题,看准题目要求。
0 0
- V-22
- V
- v
- v
- v
- v
- v
- V
- V
- V
- V
- V
- V
- v
- V
- V
- V
- v
- 网易游戏2017互娱实习笔试编程(竖式填空)
- 线程配合及Timer TimerTask理解
- 批量Kill多个进程的方法
- 求海岛周长
- SVN 无法提交 svn: Can't open file '/svn/ssq/db/txn-current-lock': Permission denied
- V-22
- 内核中驱动程序的写法
- C语言关于内存的一些描述
- Scrapy 安装
- ZigZag Conversion
- 实验博客二:1.定期存款利息计算机 2.百钱百鸡问题
- C++11 <thread>详解
- 【分治算法】Leetcode编程题解:169. Majority Element Add to List
- 图论——AtCoder Grand Contest #C Squared Graph