原题链接:找最大数序列
解题思路:
选取字符串中数字将其排除二维数组,并将二维数组中各个最大值放入一个一维数组中。再在一维数组中取出最大值。
注意事项:
使用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、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复