1 条题解

  • 0
    @ 2025-2-14 20:50:07

    C :

    #include<stdio.h>
    int main(void)
    {
    	int n;
    	scanf("%d",&n);
    	int a[n],b[n];
    	int i,j,count=0;
    	for(i=0;i<n;++i)
    	{
    		scanf("%d",&a[i]);	
    	}
    	for(i=0;i<n;++i)
    	{
    		b[i]=a[i%n]+a[(i+1)%n]+a[(i+2)%n]+a[(i+3)%n];
    	}
    	for(i=0;i<n;++i)
    	{
    		for(j=0;j<n;++j)
    		{
    			if(b[i]>=b[j])
    			{
    				count++;	
    			}	
    		}
    		if(count==n)
    		{
    			printf("%d\n%d\n",b[i],i+1);break;
    		}	
    		count=0;
    	}	
    	return 0;
    	
    } 
    

    C++ :

    #include<bits/stdc++.h>
    using namespace std;
    int main(){
        int a[20005],b[20005],ana=0,sum=0,m;
        int n;
        cin>>n;
        for(int i=1;i<=n;i++)
            cin>>a[i];
            a[n+1]=a[1];
    		 a[n+2]=a[2];
    		 a[n+3]=a[3];
    		 for(int i=1;i<=n;i++)
    		 {
    		 	if(a[i]+a[i+1]+a[i+2]+a[i+3]>sum) 
    			 {
    			 	sum=a[i]+a[i+1]+a[i+2]+a[i+3];
    			 	ana=i;
    			 }
    		 }
    		 cout<<sum<<endl<<ana;
           
    	
        return 0;
    }
    

    Pascal :

    program t20882;
    var i,j,n,m,max,flag:integer;
    a:array[1..20,1..2] of integer;
    begin
    readln(n);
    for i:=1 to 20 do
      for j:=1 to 2 do
        a[i,j]:=0;
    for i:=1 to n do
      begin
       read(m);
       a[i,1]:=m;
      end;
    for i:=1 to n-3 do
      a[i,2]:=a[i,1]+a[i+1,1]+a[i+2,1]+a[i+3,1];
    a[n-2,2]:=a[n-2,1]+a[n-1,1]+a[n,1]+a[1,1];
    a[n-1,2]:=a[n-1,1]+a[n,1]+a[1,1]+a[2,1];
    a[n,2]:=a[n,1]+a[1,1]+a[2,1]+a[3,1];
    max:=a[1,2];
    flag:=1;
    for i:=2 to n do
      if max< a[i,2] then
        begin
         max:=a[i,2];
         flag:=i;
        end;
    writeln(max);
    writeln(flag);
    end.
    
    • 1

    【基础】相加之和最大,并给出它们的起始位置

    信息

    ID
    380
    时间
    1000ms
    内存
    128MiB
    难度
    (无)
    标签
    递交数
    0
    已通过
    0
    上传者