华为OJ(线性插值)
2015-08-23 12:57
295 查看
描述 | 信号测量的结果包括测量编号和测量值。存在信号测量结果丢弃及测量结果重复的情况。 1.测量编号不连续的情况,认为是测量结果丢弃。对应测量结果丢弃的情况,需要进行插值操作以更准确的评估信号。 采用简化的一阶插值方法,由丢失的测量结果两头的测量值算出两者中间的丢失值。 假设第M个测量结果的测量值为A,第N个测量结果的测量值为B。则需要进行(N-M-1)个测量结果的插值处理。进行一阶线性插值估计的第N+i个测量结果的测量值为A+( (B-A)/(N-M) )*i (注:N的编号比M大。) 例如:只有测量编号为4的测量结果和测量编号为7的测量结果,测量值分别为4和10 则需要补充测量编号为5和6的测量结果。 其中测量编号为5的测量值=4 + ((10-4)/(7-4))*1 = 6 其中测量编号为6的测量值=4 + ((10-4)/(7-4))*2 = 8 2.测量编号相同,则认为测量结果重复,需要对丢弃后来出现的测量结果。 请根据以上规则进行测量结果的整理。详细描述:接口说明原型:intCleanUpMeasureInfo(MEASURE_INFO_STRUCT* pOriMeasureInfo,intnOriMINum,intnMaxMIRst, MEASURE_INFO_STRUCT* pMeasureInfoRst);输入参数: MEASURE_INFO_STRUCT* pOriMeasureInfo: 原始测量结果内容,以结构数组方式存放。测量编号已经按升序排列。MEASURE_INFO_STRUCT定义包含编号和测量值,见OJ.h int nOriMINum: 原始测量结果个数。 int nMaxMIRst: 整理的测量结果最大个数。输入参数: MEASURE_INFO_STRUCT* pMeasureInfoRst: 整理的测量结果返回值: Int 整理的测量结果个数 |
---|---|
知识点 | 数组,函数,指针,位运算,结构体 |
运行时间限制 | 10M |
内存限制 | 128 |
输入 | 输入说明 1 输入两个整数m, n 2 输入m个数据组 |
输出 | 输出整理后的结果 |
样例输入 | 2 3 4 5 5 7 |
样例输出 | 4 5 5 7 |
既然需要按编号升序排序,偷个懒,用map实现好了。
#include<iostream> #include<map> using namespace std; int main() { map<int,int> ori_data,insert_data; int m,n,num,value; int numdif,value_dif,num_prev,value_prev,num_next,value_next; cin>>m>>n; for(int i=0;i<m;i++) { cin>>num>>value; ori_data.insert(make_pair(num,value)); insert_data.insert(make_pair(num,value)); } map<int,int>::iterator it=ori_data.begin(); for(int i=0;i<m-1;i++) { num_prev=it->first; value_prev=it->second; it++; num_next=it->first; value_next=it->second; numdif=num_next-num_prev-1; value_dif=(value_next-value_prev)/(num_next-num_prev); for(int j=1;j<=numdif;j++) { num=num_prev+j; value=value_prev+value_dif*j; insert_data.insert(make_pair(num,value)); } } for(map<int,int>::iterator it=insert_data.begin();it!=insert_data.end();it++) cout<<it->first<<" "<<it->second<<endl; //system("pause"); return 0; }
相关文章推荐
- HDU5407 CRB and Candies 数论
- 2000年-2010年各省回族人口增长率
- Ilog、Drools、Jess规则引擎的Rule Language 对比
- CSS盒模型
- 正则表达式整理
- 编写高质量代码改善C#程序的157个建议——建议124:考虑在命名空间中使用复数
- 阿里巴巴2015秋季笔试研发工程师JAVA
- pat(B) 1037. 在霍格沃茨找零钱(水题)
- 笔记本联想(Lenovo)G40-70M加装内存和SSD固态硬盘
- Struts学习之集成Ajax
- 机器学习之特征选择
- 移动开发iOS之如何在UI界面实现视图的交替
- AspectJ在测试中的应用
- 字符串转成整型(int)
- 黑马程序员-------Java笔记--------怎么越过泛型检查
- storm trident merger
- HEX文件格式详解
- 输入三个整数,按从小到大顺序输出,用引用做形参
- Count and Say
- 如何在VC++中使用Windows Forms (VS2012-VS2015)