原题链接:找最大数序列
解题思路:
选取字符串中数字将其排除二维数组,并将二维数组中各个最大值放入一个一维数组中。再在一维数组中取出最大值。
注意事项:
使用isdigit(c)判断是否数字。
#include<sstream>中使用stringstream进行字符串与数字之间的转变。
#include<algorithm>中使用*max_element取出数组中最大值。
参考代码:
#include<iostream>
#include<vector>
#include<string>
#include<sstream>
#include<algorithm>
using namespace std;
int main()
{
int n;
vector<vector<int>>v;
cin >> n;
v.resize(n);
string s;
string temp;
int num;
//字符串提取数字
for (int i = 0; i < n; i++) {
cin >> s;
for (char c : s) {
//将数字放入临时字符串中
if (isdigit(c)) {
temp += c;
}
//将字符串转变为数字
else if (!temp.empty()) {
stringstream ss(temp);
ss >> num;
v[i].push_back(num);
temp.clear();//清空临时字符串,以备后续使用
}
}
//防止循环时,临时字符串未使用并清空。可自行修改,这里不做改进。
if (!temp.empty()) {
stringstream ss(temp);
ss >> num;
v[i].push_back(num);
temp.clear();
}
}
vector<int>q;
int flag = 1;
//取二维数组中各个最大值放入一个一维数组中。
for (int i = 0; i < n; i++)q.push_back(*max_element(v[i].begin(), v[i].end()));
//在一维数组中取出最大值。
num = (*max_element(q.begin(), q.end()));
cout << num << endl;
for (int i = 0; i < n; i++) {
if (q[i] == num) {
if (flag == 1) {
flag = 0;
cout << i + 1;
}
else {
cout << "," << i + 1;
}
}
}
return 0;
} |
0.0分
0 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复