整数数组匹配

有两个数组a和b数组,都是正数的数组,a的数组总和在b数组中哪一块连续的空间差值最小,如果找到了,就打印b数组中的数组元素,首先解决这个问题需要有两个数组,还需要把a数组的总和求出来,求出来以后对比b数组,一个一个对比,两层循环,分别从0开始匹配,left不动,让right从1到最后以次累加起来和a数组总和进行对比,如果right所记录的值比求得的差值要小,就让min被重新赋值,然后记录当前的left和right,一直循环下去直到遍历完整个数组,打印templeft和tempright中间的值,这种方法是暴力求解,时间复杂最坏的情况下是O(n^2)

复制代码
#include <stdio.h>

int main() {
    //输入
    int n=0;
    int m=0;
    scanf("%d %d",&n,&m);//两个值
    int a[n];
    int b[m];
    int i=0;
    int sum=0;
    for(i=0;i<n;i++)//n是a
    {
        scanf("%d",&a[i]);
        sum+=a[i];//求得总和
    }
    for(i=0;i<m;i++)
    {
        scanf("%d",&b[i]);
    }
    //得到了a数组的总大小
    int min=INT_MAX;//把初始的min赋值为一个最大值
    int left;//左边的下标
    int right;//右边的下标
    i=0;//i重新赋值为0,从下标为零开始循环
    int tempsum=0;//记录每次right+1的值
    int tempright=0;//记录需要被打印的右边下标
    int templeft=0;//记录需要被打印的左边的下标
    while(i<m)//m代表b
    { 
        left=i;//开始都是从0开始累加
        right=i;
        tempsum=0;//每次结束一次循环tempsum都要初始化为0
        while(right<m)//right以次累加
        {
           tempsum+=b[right];//累加
   
           int tempmin=sum>tempsum?sum-tempsum:tempsum-sum;//计算差值,保证差值是正值
           if(tempmin<min)//如果临时的差值比定义的差值小,就把right left tempmin赋值
           {
              min=tempmin;
              tempright=right;
              templeft=left;
           }
            if(tempsum>=sum)//如果tmepsum都已经大于sum而且b数组都是正数,越加只会越大
           {
            break;
           }
            right++;//向后累加
        }
        i++;//遍历数组
    }
    for(i=templeft;i<=tempright;i++)
    {
        printf("%d ",b[i]);
    }
    return 0;
}
相关推荐
梦梦代码精1 分钟前
开源、免费、可商用:BuildingAI一站式体验报告
开发语言·前端·数据结构·人工智能·后端·开源·知识图谱
郝学胜-神的一滴9 分钟前
Linux网络编程之listen函数:深入解析与应用实践
linux·服务器·开发语言·网络·c++·程序人生
有代理ip23 分钟前
成功请求的密码:HTTP 2 开头响应码深度解析
java·大数据·python·算法·php
YYuCChi26 分钟前
代码随想录算法训练营第三十四天 | 62.不同路径、63.不同路径||
算法
呱呱巨基29 分钟前
c语言 文件操作
c语言·开发语言·c++·笔记·学习
小明同学0129 分钟前
[C++进阶] 深度解析AVLTree
c++·算法·visualstudio
CoderCodingNo37 分钟前
【GESP】C++五级练习题 luogu-P1031 [NOIP 2002 提高组] 均分纸牌
开发语言·c++·算法
云小逸2 小时前
【Nmap 设备类型识别技术】整体概况
服务器·c语言·网络·c++·nmap
梯度下降中2 小时前
求职面试中的线代知识总结
人工智能·线性代数·算法·机器学习
SmartBrain2 小时前
OCR 模型在医疗场景的选型研究
人工智能·算法·语言模型·架构·aigc·ocr