3454 - max

给定一堆数,输出该堆数中第二大的数

题目输入

有多组测试数据

对于每组测试数据,先输入一个N代表有N个数字,然后输入N个数字,所有输入是小于100的非负数

题目输出

输出第二大数,每个一行

输入/输出样例

题目输入

2
1 2
3
1 1 2
3
2 2 1

题目输出

1
1
1

C语言解答

#include<stdio.h>
void main()
{
	int max1,max,x,m;
	while(scanf("%d",&x)!=EOF)
	{
		max=max1=0;
		for(x;x>0;x--)
		{
			scanf("%d",&m);
			if(m>max){max1=max;max=m;}
			if(max>m&&max1<m)max1=m;
		}
		printf("%d\n",max1);
	}
}

C++解答

#include <cstdio>
#include <iostream>
#include <cstring>
#include <cmath>
using namespace std;
int main()
{
	int n, a[200];
	while(scanf("%d",&n) != EOF)
	{
		for(int i = 0 ; i < n ; i ++)
			scanf("%d",&a[i]);

		int max = -1, max2 = -1;
		for(int i = 0 ; i < n ; i ++)
		{
			if(a[i] > max)
			{
				max2 = max;
				max = a[i];
			}
			else if (a[i] > max2 && a[i] != max)
			{
				max2 = a[i];
			}
		}
		cout << max2 << endl;
	}

	//while(scanf("%d",&n) != EOF)
	//{
	//	int a, b, x, sum = 0;
	//	for(int i = 0 ; i < n ; i ++)
	//	{
	//		cin >> x;
	//		if(i == 0)
	//			a = x;
	//		if(x != a)
	//			b = x;

	//		if(x == a)
	//			sum ++;
	//		else
	//			sum --;
	//	}
	//	if(sum > 0)
	//		cout << a << endl;
	//	else
	//		cout << b << endl;
	//}
}	
	

时间限制 1 秒
内存限制 128 MB
讨论 统计
上一题 下一题