使用Hash思想,实现输出n个整数的前m大的所有数
2018-01-04 11:32
239 查看
题目:使用Hash思想,实现输出n个整数的前n1大的所有数
输入要求:第一行输入n,n1(n,n1都要求大于-500000小于500000),第二行包含n个互不相同,且处于-500000~500000之间,第三行输出结果输入样例:5 ,3
-3 44 11 -55 33
样例输出:44 33
实现代码:
#include <iostream> #define MAXNUM 500000 int a[1000000]; using namespace std; int main(int argc, char *argv[]) { int n,n1,tmp=2*MAXNUM; while(scanf("%d%d",&n,&n1)!=EOF){ for(int i=0;i<=tmp;i++){ a[i]=0; } for(int i=0;i<n;i++){ int x; scanf("%d",&x); a[x+MAXNUM]=1; } for(int i=500000;i>=-500000;i--){ if(a[i+MAXNUM]==1){ cout<<i; n1--; if(n1!=0) printf(" "); else{ cout<<endl; break; } } } } return 0; }测试输出:
4 3 33 44 22 99 99 44 33
相关文章推荐
- java 用递归实现:输入一个整数,用字符串逆序输出,例如输入123,输出321 ,不使用全局变量
- 使用位段实现整数的二进制形式输出
- C/C++实现"输出100以内能被3整除且个位数为6的所有整数"
- 问题:利用输入输出流重载实现一个整数数组的输入和输出。 要求:输入一个数组大小 及 所有元素的值,排序后输出该数组的所有元素。
- 使用递归实现接收用户输入的正整数,输出该数的阶乘
- 1.写一个函数返回参数二进制中1的个数2.获取一个数二进制序列中所有的偶数为和奇数位,分别输出二进序列3.输出一个整数的每一位4.编程实现:两个int(32位)整数m和n的二进制表达中,有多少个位(b
- 在不使用if,while,do...while,for,switch,?:等操作,实现函数void printLess(int k),返回小于k的所有整数
- 从键盘输入某个十进制小数或整数,转换成对应的二进制小数并输出。 (查询十进制小数转换成二进制小数的算法,使用循环来实现。 最多保留小数位后7位数字即可)算法
- .使用面向对象思想,输出员工信息并计算员工的工资。实现过程为:定义一个部门(Department)类,该类有部门编号(Id)、部门名称(Name)属性; 再定义一个员工(Employee)类,该类的属
- 使用mod_ext_filter组件在Apache中实现输出内容的替换,为所有页面增加统计功能
- 输入一个整数,使用递归方法实现反向输出
- Java实现输入一个整数将该整数之前的所有素数输出出来
- JAVA:递归实现输出正整数和等于n的所有不增的正整数和式
- <C语言>如何一步一步根据简单的代码联想到更多的功能?(实现输入一个整数,输出比它小包括它本身的所有素数。)
- 递归实现输出n个整数的全排列和所有子集
- 素数回文——输出两整数之间所有既是回文数又是素数的数 C++实现
- 不要把所有鸡蛋都放在一个篮子里——使用RoboCopy实现网络备份
- 不要把所有鸡蛋都放在一个篮子里——使用RoboCopy实现网络备份
- 不要把所有鸡蛋都放在一个篮子里——使用RoboCopy实现网络备份
- 技巧和诀窍:使用ASP.NET 2.0 输出缓存替换的功能实现“甜圈缓存(Donut Caching)”