题目来源:http://noi.openjudge.cn/ch0109/10/
10:找最大数序列
描述
输入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
-----------------------------------------------------
解题思路
坑点主要在输入的处理。解决方法是用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); } } }