NOI 1.9顺序查找 10:找最大数序列

题目来源:http://noi.openjudge.cn/ch0109/10/

10:找最大数序列

描述

输入n行,每行不超过100个无符号整数,无符号数不超过4位。请输出最大整数以及最大整数所在的行号(行号从1开始)。如果该数据在多个行中出现,则按从小到大输出相应行号,行号之间以一个逗号分开。

输入

一行输入一个正整数nn <= 30)。
之后的n行,每行包含不超过100个无符号整数,整数之间以一个逗号分开。

输出

第一行:最大整数;
第二行:最大整数所在的行编号,逗号间隔。

样例输入

6
1,3,5,23,6,8,14
20,22,13,4,16
23,12,17,22
2,6,10,9,3,6
22,21,20,8,10
22,1,23,6,8,19,23

样例输出

23
1,3,6

-----------------------------------------------------

解题思路

坑点主要在输入的处理。解决方法是用cin >> (int型的)num读入数字,用getchar()读入字符(“,”或“\n”)

-----------------------------------------------------

代码

 

/*
顺序查找
*/
//10:找最大数序列
//总时间限制: 1000ms 内存限制: 65536kB
//描述
//输入n行,每行不超过100个无符号整数,无符号数不超过4位。请输出最大整数以及最大整数所在的行号(行号从1开始)。如果该数据在多个行中出现,则按从小到大输出相应行号,行号之间以一个逗号分开。
//
//输入
//一行输入一个正整数n(n <= 30)。
//之后的n行,每行包含不超过100个无符号整数,整数之间以一个逗号分开。
//输出
//第一行:最大整数;
//第二行:最大整数所在的行编号,逗号间隔。
//样例输入
//6
//1,3,5,23,6,8,14
//20,22,13,4,16
//23,12,17,22
//2,6,10,9,3,6
//22,21,20,8,10
//22,1,23,6,8,19,23
//样例输出
//23
//1,3,6

#include<fstream>
#include<iostream>
#include<vector>
using namespace std;

int main()
{
	int n,mymax = 0,i,num;
	vector<int> line;
	cin >> n;
	for (i=1; i<=n; i++)
	{
		do{
			cin >> num;
			if (num > mymax)
			{
				mymax = num;
				line.clear();
				line.push_back(i);
			}
			else if (num == mymax && (i!=line.back()||line.empty()))
			{
				line.push_back(i);
			}
		}while(getchar()!='\n');
	}
	cout << mymax << endl;
	cout << line.front();
	if (line.size()>1)
	{
		for (i=1; i<line.size(); i++)
		{
			cout << "," << line.at(i);
		}

	}
}


猜你喜欢

转载自blog.csdn.net/da_kao_la/article/details/80383155
今日推荐