整数数组匹配

有两个数组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;
}
相关推荐
tangguofeng9 小时前
不带头结点的链队操作集(不含InitFlag)(C语言版)
算法
xailorliu11 小时前
SLIC_超像素算法
c++·opencv·目标检测·机器学习·计算机视觉
苏打豆11 小时前
CRISP源码阅读——基于ROS2力矩反馈控制器与速度加速度零空间
c++·线性代数·算法·矩阵·机器人
蛋蛋的就会顺顺的11 小时前
hot100——矩阵
java·数据结构·算法·leetcode·力扣
老歌老听老掉牙11 小时前
麻花钻切屑形态演变的力学机制与临界条件分析
python·算法·钻头
小小龙学IT12 小时前
snap7 开源西门子 S7 通信协议库深度解析
c++·开源
zhangfeng113312 小时前
国产GPU/AI算力芯片现状(修订完整版 · 截至2026年9月
人工智能·算法·ai编程·npu
学代码的CJY12 小时前
从代码出发理解时间复杂度与空间复杂度
数据结构·算法
小溪学编程13 小时前
从 C++ 的规范变迁看语言发展
jvm·c++·面试
白帽攻防录13 小时前
SRC 挖洞:WSO2 JWT 算法混淆绕过深度复盘,CVE-2026-5430 不支持的算法怎么变成管理员
网络·算法·安全·网络安全·jwt