数列极差问题
2016-04-19 19:22
302 查看
在黑板上写了n个正整数排成的一个数列,进行如下操作:每次擦去其中的两个数a和b,然后在数列中加入一个数a*b+1,如此下去直至黑板上剩下一个数,在所有按这种操作方式最后得到的数中,最大的记为max,最小的记作min,则该数列的极差定义位m=max-min。
问题分析:下面通过实例来认识题目中描述的计算过程。对3个具体的数据3,5,7,讨论,可能有一下3种结果:
(3*5+1)*7+1 = 113,(3*7+1)*5+1=111,(5*7+1)*3+1=109
由此可见,先运算小数据得到的是最大值,先运算大数据得到的是最小值。
C++源代码如下所示:
运行结果:
问题分析:下面通过实例来认识题目中描述的计算过程。对3个具体的数据3,5,7,讨论,可能有一下3种结果:
(3*5+1)*7+1 = 113,(3*7+1)*5+1=111,(5*7+1)*3+1=109
由此可见,先运算小数据得到的是最大值,先运算大数据得到的是最小值。
C++源代码如下所示:
#include <iostream> #include <vector> #include <string> using namespace std; //计算最大值 int calculateMax(vector<int> &v) { size_t sz = v.size(); if (sz == 1) { return v[0]; } vector<int>::iterator ita,itb; //每次找出v中最小的两个数*ita、*itb,然后合并成(*ita)*(*itb)+1 while (v.size() > 2) { ita = v.begin(); itb = ita +1; if (*itb < *ita) { int tmp; tmp = *ita; *ita = *itb; *itb = tmp; } for (vector<int>::iterator it = itb+1;it != v.end();++it) { if (*it < *ita) { itb = ita; ita = it; } else if (*it < *itb) { itb = it; } } *ita = (*ita)*(*itb)+1; v.erase(itb); } return v[0]*v[1]+1; } //计算最小值 int calculateMin(vector<int> &v) { size_t sz = v.size(); if (sz == 1) { return v[0]; } vector<int>::iterator ita,itb; //每次找出v中最大的两个数v[i]、v[j],然后合并成v[i]*v[j]+1 while (v.size() > 2) { ita = v.begin(); itb = ita +1; if (*itb > *ita) { int tmp; tmp = *ita; *ita = *itb; *itb = tmp; } for (vector<int>::iterator it = itb+1;it != v.end();++it) { if (*it > *ita) { itb = ita; ita = it; } else if (*it > *itb) { itb = it; } } //用(*ita)*(*itb)+1代替*ita,然后将itb删除 *ita = (*ita)*(*itb)+1; v.erase(itb); } return v[0]*v[1]+1; } int main() { vector<int> v; v.push_back(3); v.push_back(5); v.push_back(4); v.push_back(7); vector<int> v1(v); vector<int> v2(v); int max_num = calculateMax(v1); int min_num = calculateMin(v2); cout<<max_num<<'-'<<min_num<<'='<<max_num - min_num<<endl; return 0; } // 3 5 4 7
运行结果:
相关文章推荐
- 在表创建之后,删除或添加非空索引
- JavaScript中的函数
- hdoj1005
- 次方求模
- 自定义控件开关,绘制图片。
- hdu——1556Color the ball(树状数组)
- 关于QT中自动添加槽函数编译出错的问题
- 推荐算法——非负矩阵分解(NMF)
- SQL Access Advisor
- java 笔记
- 冒泡排序
- 【HDU】 1035 Robot Motion
- 利用kafka内建的特殊topic 做offsets 提交和检索
- SVM推导帖子收藏
- CSS3 3D圆形设计教程
- 计算机程序的思维逻辑 (4) - 整数的二进制表示与位运算
- Hbase安装
- laravel blade模板介绍
- jni代码
- 字符串的翻转问题