C++ 编程题练习-priority queue练习题(9-6)
来源:互联网 发布:2016零售业数据 编辑:程序博客网 时间:2024/06/06 08:47
C++ 编程题练习-priority queue练习题
来源:coursera c++ pku 第9周编程作业
一、题目
描述
我们定义一个正整数a比正整数b优先的含义是:
*a的质因数数目(不包括自身)比b的质因数数目多;
*当两者质因数数目相等时,数值较大者优先级高。
现在给定一个容器,初始元素数目为0,之后每次往里面添加10个元素,每次添加之后,要求输出优先级最高与最低的元素,并把该两元素从容器中删除。
输入
第一行: num (添加元素次数,num <= 30)
下面10*num行,每行一个正整数n(n < 10000000).
输出
每次输入10个整数后,输出容器中优先级最高与最低的元素,两者用空格间隔。
样例输入
1
10 7 66 4 5 30 91 100 8 9
样例输出
66 5
二、程序
这道题可以使用priority_queue,也可以使用set,但用priority_queue时要去除最大最小的两个数,并把它们删除会有点麻烦,因此这里使用set。
#include <iostream>#include <queue>#include <set>#include <cmath>using namespace std;struct Node{ int num; int fac; Node(int n=0, int f=0):num(n), fac(f) { }}; bool operator < (Node a, Node b){ if(a.fac == b.fac) return a.num<b.num; return a.fac<b.fac;}//int getFacs(const int num);//class Comp//{// public:// bool operator()(const int & a, const int & b){// int fac1, fac2;// fac1 = getFacs(a);// fac2 = getFacs(b);// if(fac1==fac2) return a<b;// else return fac1<fac2;// }//};bool isPrime(int n){ for(int i=2; i<=sqrt(n); i++) if(n%i==0) return false; return true;}int getFacs(const int num){ int fac=0; int temp = num; int k = 0; for(int j=2; j<=sqrt(temp); j++){ if(temp%j==0){ if(isPrime(j)) fac++; k = temp/j; if(j!=k && isPrime(k)) fac++; } } return fac;}int main(){ set<Node> q; //也可以存储int类型,并自行定义大小关系 // set<int, Comp> q; int n; cin>>n; while(n--){ for(int i=0; i<10; i++){ int num; cin>>num; int fac = getFacs(num); q.insert(Node(num, fac)); } Node min = *(q.begin()); Node max = *(q.rbegin()); //题目要求把这两个元素从容器中删除 q.erase(max); q.erase(min); set<Node>::iterator i; for(i=q.begin(); i!=q.end(); i++){ cout<<(*i).num<<endl; } cout<<max.num<<" "<<min.num<<endl; } return 0;}
0 0
- C++ 编程题练习-priority queue练习题(9-6)
- 编程题#6: priority queue练习题(C++程序设计第9周)
- POJ-priority queue练习题:比较质因数个数
- 优先队列(Priority Queue)
- 优先队列(priority queue)
- 优先队列(Priority Queue)
- 由priority queue练习题引出的高效素数求解
- C语言练习题(ACM编程练习)
- 标准模板库 STL-2 编程题#6: priority queue(Coursera 程序设计与算法 专项课程3;容器中自定义排序顺序 MyCompare,判断质数)
- priority queue
- Standford cs106B Assignment #6 Priority Queue
- HDOJ-1509(stl priority queue)
- 浅谈优先队列(priority queue)
- Priority Queue(Heaps)--优先队列(堆)
- 优先级队列(priority——queue)
- Android Priority Job Queue使用(1)
- 纯c实现的俄罗斯方块(加了一点c++的priority queue)
- STL学习记录(十六):Queue、Priority Queue
- #include <sys/types.h>的作用
- Yii2之资源配置$jsOptions与$cssOptions
- XHR 实例 GET 和 POST 异步和同步
- Node.js进程通信模块child_process
- 用代码展开 select 下拉菜单
- C++ 编程题练习-priority queue练习题(9-6)
- 【JZOJ4594】Dynamic len
- es6新特性学习
- SSH学习——链接
- Lucene 6.0 配置(一)
- ubuntu下设置开机自启动项
- IOS开发之制作静态库
- 以太坊是什么?——以太坊创始人 Vitalik Buterin 的解答
- Cocos2d-x 如何优化内存使用