读书人

c语言 圆盘找数 基础题解决思路

发布时间: 2012-04-28 11:49:53 作者: rapoo

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

我写的源码

C/C++ code
#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;        }    }}


大家要注意出现相同数就找不准,这就是这个题的问题所在!

[解决办法]
计算出和后,为什么要排序??不就是在和数组中找到最大值和最小值么??

读书人网 >C语言

热点推荐