爱与愁的心痛(求错误点)

img


#include
int main()
{
    int m,n,i,j,k,min=0,s=0;
    scanf("%d %d",&m,&n);
    int t[m+1];
    for(i=1;i<=m;i++)
    {scanf("%d",&t[i]);
    }for(i=1;i<=n;i++)
    min+=t[i];
    for(i=1;i<=m-j+1;i++)
    {for(j=i;j<=i+m-1;j++)
    {
    s+=t[j];}if(s<=min)min=s;s=0;
    }printf("%d",min);
    return 0;
}

求错误点!!

计算连续指定个数的数字最小值为多少那里的逻辑,我有点没看懂。下面的例子以两个for循环来求这个最小值,第一个for循环控制计算多少次-次数为输入的数字的个数少n个(即保证最后有n个数),第二个for循环控制从当前数字位置往后计算n个数字的和,然后通过两个循环计算出这个最小值为多少,代码如下:


 
 
 
#include<stdio.h>
int main()
{
    int m,n,i,j,k,min=0,s=0;
    scanf("%d %d",&m,&n);
    int t[m+1];
    for(i=0;i<m;i++)  // 数组下标从0开始计算,方便后面计算与判断 
    {
        scanf("%d",&t[i]);
    }
    
    
    for(i=0;i<m-n;i++){  // 控制计算到数组哪个下标位置停止 
        
        s=0;  //每次累加3个数的和初始置0 
        for(j=i;j<i+n;j++){  // 从数组此位置往后计算3个数,累加其和 
            s+=t[j]; 
        }
        
        if(i==0){ //如果是第一个累加,则最小值为第1个三个数的和 
            min=s;
        //    printf("i=%d,min=%d\n",i,min);
        }else{  // 往后的数,则计算与其他三个数的和的最小值 
            
            if(s<min){
                min=s;
            //    printf("i=%d,min=%d\n",i,min);
            }
            
        }
        
    } 
    
    

    
    printf("%d",min);
    
    return 0;
}

img


 
#include<stdio.h>
int main()
{
    int m,n,i,j,min=0,s=0;
    scanf("%d %d",&n,&m);//首先n代表事件个数,m代表连续几个事件 
    int t[n];
    for(i=0;i<n;i++)
    {
        scanf("%d",&t[i]);
    }
    for(i=0;i<=n-m;i++)
    {
        for(j=i;j<m+i;j++)
        {
            s+=t[j];
        }
        if(i==0)
        {
            min=s;
        }
        else 
        {
            if(s<min)
            {
                min=s;
            }
        }
        s=0;
    }
    printf("%d",min);
    return 0;
}