数列极差问题
2015-11-23 21:11
253 查看
#include <iostream> #include <fstream> #include <queue> using namespace std; //类似Huffman int max(int *a, int n) { priority_queue<int> q; int i; for(i=0; i<n; i++) q.push(a[i]); int data1, data2, data; while(q.size()>=2) //一直合并下去,直到队列中只剩下一个数 { data1 = q.top(); q.pop(); data2 = q.top(); q.pop(); data = data1 * data2 + 1; q.push(data); } data = q.top(); q.pop(); return data; } int min(int *a, int n) { priority_queue<int, vector<int>, greater<int> > q; int i; for(i=0; i<n; i++) q.push(a[i]); int data1, data2, data; while(q.size()>=2) //一直合并下去,直到队列中只剩下一个数 { data1 = q.top(); q.pop(); data2 = q.top(); q.pop(); data = data1 * data2 + 1; q.push(data); } data = q.top(); q.pop(); return data; } int greedy(int *a, int n, int &m) { int M = max(a, n) - min(a, n); //极差 int temp = M; int count = 0; //极差位数 while(temp) { count++; temp /= 10; } if(M == 0) count = 1; m = count; return M; } int main() { ifstream fin("数列极差.txt"); cout << "输入数列长度:"; int n; fin >> n; cout << n; cout <<"\n输入数列:\n"; int i; int *a = new int ; for(i=0; i<n; i++) { fin >> a[i]; cout << a[i] << " "; } int m; int M = greedy(a, n, m); cout << "\n极差位数数为:" << m << endl; cout << "极差为:" << M << endl; fin.close(); return 0; }
相关文章推荐
- adoop in Action] 第2章 初识Hadoop
- 人脸检测2015进展
- java中的异常调用(一)
- BP神经网络进行网络训练
- 二叉树的一些基本操作(括号表示法,宽度,深度,结点个数,叶子节点个数)
- jquery常见获取高度
- 第一个spring冲刺团队贡献分(80分满分)
- 临界区(临界段)的含义
- JDBC数据库的增删改查
- MySQL下使用一个叫做test数据库,新建一个表,再查看表结构。
- 结构体的应用-简易电话簿-20151115
- kmp算法的实现及心得体会
- Windows系统下如何优化Android Studio
- Android中修改状态栏的颜色和我们App的风格一样
- 【Android UI设计与开发】8.顶部标题栏(一)ActionBar 奥义·详解
- Spark原理介绍
- 单例
- Swift中正则使用正则的几种方式
- 第几次出现
- C# 预处理器指令