为什么我用C语言照着写C++的代码就是过不了呢?但是C++的代码可以过!!!
查看原帖
为什么我用C语言照着写C++的代码就是过不了呢?但是C++的代码可以过!!!
535412
moloo楼主2021/7/9 21:32

C语言的版本

#include<stdio.h>
#include<stdlib.h>
#define N  1000001

long long n, k;
long long a[N], s[N];

int main(void)
{
	scanf("%d %d", &n, &k);
	long long i;
	for(i = 1; i < n; i++)
	{
		scanf("%d", &a[i]);
		a[i] += a[i-1];
	}
	if(k == 0)
	{
		printf("%d", a[n-1]);
	}
	else
	{
		long long maxw = 0;
		long long i;
		long long record;
		for(i = 0; i <= n-1-k; i++)
		{
			if((a[i+k] - a[i]) > maxw)
			{
				maxw = a[i+k] - a[i];
				record = i;
			}
		}
		printf("%d", a[n-1]-a[record+k]+a[record]);
	}
	return 0;
}

C++的版本

#include <iostream>
#include <cstdio>
#include <fstream>
#include <algorithm>
#include <cmath>
#include <deque>
#include <vector>
#include <queue>
#include <string>
#include <list>
#include <cstring>
#include <map>
#include <stack>
#include <set>
#define N 101
using namespace std;
long long n,k,m,maxans,a[1000005];

int main()
{
	cin>>n>>k;
	n--;
	for (long long  i=1;i<=n;i++)
	  {
	  	cin>>a[i];
	  	a[i]+=a[i-1];
	  }
    if (k==0) {
	  	cout<<a[n];
	} 	  
	else
	{
		for (long long i=0;i<=n-k;i++)
		  if ((a[i+k]-a[i])>maxans)
		  {
		  	maxans=a[i+k]-a[i];
		  	m=i;
		  }
	cout<<a[m]+a[n]-a[k+m];	
	}
  return 0;			 	 
 }
2021/7/9 21:32
加载中...