ACM Open Judge:2.圆盘找数
2015-07-13 15:23
453 查看
2.圆盘找数
题目描述
如图找出3个连续数(紧挨着的3个数),它们相加和最大,再找出和数最小的3个数,试编一程序求之。输入
输入的第一行有一个整数n,表示测试数据的组数。接下来有n行,每行有若干个整数a1,a2,…,am,(-10000≤a1,a2,…, am ≤ 10000),他们表示一个圆盘上的m个数,(m≤1000)。输入直到文件输入结束。
输出
对输入中每一行表示的圆盘,在一行上先输出“Case #:”,其中“#”是测试数据的行编号(从1开始),接着在下面的一行上分别输出这三个相邻数字之和中最大和与最小和,以及取得最大和与最小和对应的那三个相邻数字的第一个数的下标MaxIndex与MinIndex。注:数的下标约定从1开始编起。假如这些数不到3个,那么就无法按圆盘方式计算,此时输出“No maximal and minimal!”
样例输入
2 20 1 8 4 13 6 10 15 2 17 3 19 7 16 8 11 14 9 12 5 1 -2
样例输出
Case 1: maximum = 42, minimum = 13, MaxIndex = 12, MinIndex = 2 Case 2: No maximal and minimal!
源代码(C语言)
//Programmed by Daphne 2015.7.7 //E-mail: Daphne.Chang@foxmail.com #include <stdio.h> int main() { int a[1005],k,count=1; scanf("%d",&k); int max,min,maxIndex,minIndex; while(k--) { int n=0; while(1) { scanf("%d",&a ); n++; if(getchar()=='\n') break; } /* for(int i=0;i<n;i++) { printf("%d ",a[i]); } printf("\n");*/ printf("Case %d:\n",count++); if(n<3) { printf("No maximal and minimal!\n"); } else { max=a[0]+a[1]+a[2]; min=a[0]+a[1]+a[2]; maxIndex=0; minIndex=0; for(int i=1;i<n-2;i++) { if((a[i]+a[i+1]+a[i+2])>max) { max=a[i]+a[i+1]+a[i+2]; maxIndex=i; } if((a[i]+a[i+1]+a[i+2])<min) { min=a[i]+a[i+1]+a[i+2]; minIndex=i; } } if(a[n-2]+a[n-1]+a[0]>max) { max=a[n-2]+a[n-1]+a[0]; maxIndex=n-2; } if(a[n-2]+a[n-1]+a[0]<min) { min=a[n-2]+a[n-1]+a[0]; minIndex=n-2; } if(a[n-1]+a[0]+a[1]>max) { max=a[n-1]+a[0]+a[1]; maxIndex=n-1; } if(a[n-1]+a[0]+a[1]<min) { min=a[n-1]+a[0]+a[1]; minIndex=n-1; } printf("maximum = %d, minimum = %d, MaxIndex = %d, MinIndex = %d\n",max,min,maxIndex+1,minIndex+1); } } return 0; }
相关文章推荐
- 动易2006序列号破解算法公布
- Ruby实现的矩阵连乘算法
- C#插入法排序算法实例分析
- 超大数据量存储常用数据库分表分库算法总结
- C#数据结构与算法揭秘二
- C#冒泡法排序算法实例分析
- 算法练习之从String.indexOf的模拟实现开始
- C#算法之关于大牛生小牛的问题
- C#实现的算24点游戏算法实例分析
- c语言实现的带通配符匹配算法
- 浅析STL中的常用算法
- 算法之排列算法与组合算法详解
- C++实现一维向量旋转算法
- Ruby实现的合并排序算法
- C#折半插入排序算法实现方法
- 基于C++实现的各种内部排序算法汇总
- C++线性时间的排序算法分析
- C++实现汉诺塔算法经典实例
- PHP实现克鲁斯卡尔算法实例解析
- C#常见算法面试题小结