线性插值

线性插值

http://www.nowcoder.com/questionTerminal/91b4c0f9fa9545a582e5b38bb9f6b90e

/* 基本思路: 题目输入的n是没什么用的。输入m组数据,每组数据保护编号、测量值 
              单层循环遍历数组,若序号重复,temp++查找下一个数据的下标,若序号不连续,进行线性插值 
*/
#include<iostream>
using namespace std; 
int num[1000], value[1000];
void buzhi(int m, int n, int index_m, int index_n){ // m是前面的序号,n是后边的序号, index_m ,index_n分别是对应的下标 
    int temp;
    for(int i = m + 1; i < n; i++){
        temp = value[index_m] + (value[index_n]-value[index_m])/(n - m)*(i-m);
        cout << i << " ";
        cout << temp << endl;
    }
}

int main(){
    int m, n;
    while(cin >> m >> n){
        for(int i = 0; i < m; i++){
            cin >> num[i] >> value[i];
        }
        int temp=0;
        for(int i = 0; i < m-1, temp < m; i=temp){
            temp=i+1;
            cout << num[i] << " " << value[i] << endl;
            while(num[i] == num[temp]) temp++;
            if(num[i] != num[temp]-1){ // 如果不连续 
                buzhi(num[i], num[temp], i, temp);
            }
        }
        for(int i = 0; i < 1000; i++) num[i]={0};
        for(int i = 0; i < 1000; i++) value[i]={0};
    }
    return 0;
}
/*
测试数据: 
6 3
2 4
2 5
2 6
5 10
5 11
7 22
7 23
*/
全部评论
太需要了,感谢!!
点赞 回复 分享
发布于 2022-09-21 15:59 陕西

相关推荐

10-09 22:05
666 C++
找到工作就狠狠玩CSGO:报联合国演讲,报电子烟设计与制造
点赞 评论 收藏
分享
accaacc:2到4k,不是2k到4k,所以年薪是30块
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务