#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;
}
#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;
}