4 条题解
-
1
*#include <stdio.h> int main() { int n, m; scanf("%d %d", &n, &m); int arr[n]; for (int i = 0; i < n; i++){ scanf("%d", &arr[i]); } int sum = 0; for (int i = 0; i < m; i++){ sum += arr[i] } int minSum = sum; for (int i = m; i < n; i++) { sum = sum - arr[i - m] + arr[i]; // 更新 sum,减去窗口最前面的事件刺痛值,加上新进入窗口的事件刺痛值(唯一注意点) if (sum < minSum) { minSum = sum; } } printf("%d\n", minSum); return 0; }
-
0
#include<stdio.h> #include<iostream> #include<algorithm> const int N=100000; int sum[N]; int f[N]; using namespace std; int main() { int n,m,q=0,min1=300000; cin>>n>>m; for(int i=1;i<=n;i++) { cin>>f[i]; } for(int j=1;j<=n-m+1;j++) { int m1=m; q=j; while(m1--) { sum[j]+=f[q++]; } } for(int j=1;j<=n-m+1;j++) { min1=min(min1,sum[j]); } cout<<min1; return 0; } 经过本人这么长时间的做题,发现我老是错在想当然,什么意思呐,我以为for循环中的m给它赋值完之后它不会变,所以大胆的在下面进行了m--,但m是变量,它的值是会改变的。😄
-
0
看个乐吧😄 #include <stdio.h>
int main ()
{
int n,m;
scanf("%d %d",&n,&m);
int a[n];
int b=n-m+1;
int c[b];
c[0]=0;
for(int i=0;i<n;i++){
scanf("%d",&a[i]);
}
for(int j=0;j<m;j++){ c[0]+=a[j]; } for(int l=1;l<b;l++){ c[l]=c[l-1]-a[l-1]+a[l+m-1]; } int min=c[0];
for(int l=1;l<b-1;l++){
if(c[l]<min){
min=c[l];
}
}
printf("%d\n",min); return 0;
}
- 1
信息
- ID
- 102
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 7
- 标签
- (无)
- 递交数
- 922
- 已通过
- 196
- 上传者