【HPU】[1437] 王小二的求值问题 HPU1437

点此尝试本题

题目描述

    题意超级简单,求一个序列的次大值。

输入

    多组输入,每个测试实例占两行,包括一个整数n (1<n<1000000),接下来一行是n个int范围内的整数,求次大值;

输出

    对于每个测试实例,输出序列的次大值,每个输出占一行。

样例输入

5
1 2 3 4 5

样例输出

4

来源

Solution

    本题不算难,主要对考察逻辑的掌握。先找出前2个数的最大值ans1,次大值ans2。遍历之后的 n-2 个数,不断更新ans1,ans2。不是太理解的话,在纸上画图自己用笔模拟一下,多思考。

做任何题目时,仔细读题!仔细读题!继续加油吧。

Code

/* 
n>=2,先找出前两个数的最大值ans1,次大值ans2;
遍历之后的n-2个数,不断更新ans1,ans2; 
*/ 

#include <stdio.h>

int main() {
	int n, k;
	while(scanf("%d", &n) != EOF) {
		int ans1, ans2;
		for(int i = 0; i < n; i++) {
			scanf("%d", &k);
			if(!i) ans1 = k;
			else if(i == 1) { //统计前两个数,比较出最大值,次大值; 
				if(k >= ans1) {
					ans2 = ans1;
					ans1 = k;
				}
				else {
					ans2 = k;
				}
			}
			else { 
				if(k > ans2) { //和次大值比较 
					if(k >= ans1) { //和最大值更新; 
						ans2 = ans1;
						ans1 = k;
					}
					else {
						ans2 = k;
					}
				}
			}
		}
		printf("%d\n", ans2);
	} 
	return 0;
} 

2018-01-17 17:08:49
About | Past

基于 PPKCdaily
Copyright © HPUACM