杭电ACM 1280 前m大的数
来源:互联网 发布:au mac 中文破解版 编辑:程序博客网 时间:2024/05/19 15:42
前m大的数
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 16923 Accepted Submission(s): 5738
Problem Description
还记得Gardon给小希布置的那个作业么?(上次比赛的1005)其实小希已经找回了原来的那张数表,现在她想确认一下她的答案是否正确,但是整个的答案是很庞大的表,小希只想让你把答案中最大的M个数告诉她就可以了。
给定一个包含N(N<=3000)个正整数的序列,每个数不超过5000,对它们两两相加得到的N*(N-1)/2个和,求出其中前M大的数(M<=1000)并按从大到小的顺序排列。
给定一个包含N(N<=3000)个正整数的序列,每个数不超过5000,对它们两两相加得到的N*(N-1)/2个和,求出其中前M大的数(M<=1000)并按从大到小的顺序排列。
Input
输入可能包含多组数据,其中每组数据包括两行:
第一行两个数N和M,
第二行N个数,表示该序列。
第一行两个数N和M,
第二行N个数,表示该序列。
Output
对于输入的每组数据,输出M个数,表示结果。输出应当按照从大到小的顺序排列。
Sample Input
4 41 2 3 44 55 3 6 4
Sample Output
7 6 5 511 10 9 9 8
解题思路:先把所有的两个数的和加起来保存在容器,然后运用sort函数排好序,最后输出前m个就可以了。
之前我的错误思路是像1,2,3,4;先从3开始 3+4;
2 2+4 2+3;
1 1+4 1+3 1+2
忽略的情况 1,2,3,7,9 7 7+9
3 3+93+7
2 2+9 2+7 2+3 这就出现了后面输出的数可能比之前输出的数还要大。
AC的代码是:
#include<iostream>#include<algorithm>#include<vector>using namespace std;int main(){ int n,m,x; bool flag; vector<int> vec,vec1; while(cin>>n>>m) { vec.clear(); vec1.clear(); while (n--) { cin>>x; vec.push_back(x); } sort(vec.begin(),vec.end()); flag = false; for (int i = 0; i < vec.size(); i++) { for (int j = i + 1; j < vec.size(); j++) { vec1.push_back(vec[i] + vec[j]); } } sort(vec1.begin(),vec1.end()); flag = false; for (int i = vec1.size() - 1;i > vec1.size() - 1 - m;i--) { if(!flag)flag = true; else cout<<" "; cout<<vec1[i]; } cout<<endl; } return 0;}
错误代码:
#include<iostream>#include<algorithm>#include<vector>using namespace std;int main(){ int n,m,x; bool flag; vector<int> vec; while(cin>>n>>m) { vec.clear(); while (n--) { cin>>x; vec.push_back(x); } sort(vec.begin(),vec.end()); flag = false; for (int i = vec.size() - 2; i >= 0; i--) { for (int j = vec.size() - 1; j > i; j--) { if(m-- > 0) { if(!flag)flag = true; else cout<<" "; cout<<vec[i] + vec[j]; } else {i = -1; break;} } } cout<<endl; } return 0;}如果输入的数是连续的自然数,错误方法是成立的。
0 0
- 杭电ACM 1280 前m大的数
- 杭电ACM--HDU1280 前m大的数
- 杭电 1280 前m大的数
- 杭电1280 前m大的数(哈希表)
- 杭电 1280 前m大的数
- 杭电1280(前m大的数)
- 前m大的数 HDU杭电1280 【水】
- 【杭电】[1280]前m大的数
- 【杭电】[1280]前m大的数
- 杭电—1280 前m大的数
- 杭电OJ1280-前m大的数
- 杭电OJ题 1280 前m大的数 解题报告
- 【杭电oj】1280 - 前m大的数(水)
- 【杭电-oj】-1280-前m大的数(sort)
- HDOJ 1280 前m大的数
- hdoj 1280 前m大的数
- HDU 1280 前m大的数
- hdu 1280 前m大的数
- Gaussian Blurring
- H.264中整数DCT变换,量化,反量化,反DCT究竟是如何实现的?(无代码,无真相)
- 关于main(int argc, char* argv[])
- 新浪SAE启动报class org.springframework.web.filter.CharacterEncodingFilter is not a javax.servlet.Filter
- Selenium - (new Actions(driver)).moveToElement(ele).click().perform() 页面没反应
- 杭电ACM 1280 前m大的数
- linux操作系统centos 7 安装MySQL数据库
- 删除github上的仓库
- Convolutional neural networks(CNN) (三) Sparse Autoencoder Exercise(Vectorization)
- 源码搭建Lump环境
- EasyUI 面板
- 例解 Linux 下 Make 命令
- python读取 txt转换成csv
- 【JDK】Priority Queue 堆实现源码详解