c语言 圆盘找数 基础题
Time Limit:1000MS Memory Limit:65536K
Total Submit:16 Accepted:7
Description
圆盘找数:有首尾相接一组数,共计n个,找出4个相邻的数,使其相加之和最大和最小的是哪4个数?并给出它们的起始位置。
Input
输入第一行为一个n,第二行为n个用空格隔开的整数。
Output
输出分别为和最大和最小的是哪4个数的起始位置。
Sample Input
6
1 2 3 4 5 6
Sample Output
3 1
我写的源码
#include<stdio.h>void main(){ int n,arr[10000],i,j,t,s[10000],s1[10000]; scanf("%d",&n); for(i=0;i<n;i++) scanf("%d",&arr[i]); for(i=0;i<n;i++){ if(i==n-3){ s[i]=arr[i]+arr[i+1]+arr[i+2]+arr[0]; } else if(i==n-2){ s[i]=arr[i]+arr[i+1]+arr[0]+arr[1]; } else if(i==n-1){ s[i]=arr[i]+arr[0]+arr[1]+arr[2]; } else s[i]=arr[i]+arr[i+1]+arr[i+2]+arr[i+3]; } for(i=0;i<n;i++) s1[i]=s[i]; for(i=0;i<n-1;i++){ for(j=i+1;j<n;j++){ if(s[i]>s[j]){ t=s[i]; s[i]=s[j]; s[j]=t; } } } for(i=0;i<n;i++){ if(s1[i]==s[n-1]){ printf("%d ",arr[i]); break; } } for(i=0;i<n;i++){ if(s1[i]==s[0]){ printf("%d\n",arr[i]); break; } }}