4 条题解

  • 1
    @ 2024-10-3 11:05:43

    *#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
      @ 2025-1-5 12:50:39
      #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
        @ 2024-10-12 23:06:28

        看个乐吧😄 #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;

        }

        • 0
          @ 2024-10-12 19:54:29
          #include<stdio.h>
          int main(){
              int n,m,min=0;
              int a[3000];
              scanf("%d %d",&n,&m);
              for(int i=0;i<n;i++){
                  scanf("%d",&a[i]);
              }
              int sum;
              for(int i=0;i<n-m+1;i++){
                  sum=0;
                  for(int j=0;j<m;j++){
                      sum=sum+a[i+j];
                  }
                  if(min==0){
                      min=sum;
                  }
                   if(min>sum){
                      min=sum;
                  }
              }
          printf("%d",min);
          }
          
          • 1

          信息

          ID
          102
          时间
          1000ms
          内存
          256MiB
          难度
          7
          标签
          (无)
          递交数
          922
          已通过
          196
          上传者