解题思路:

    选取字符串中数字将其排除二维数组,并将二维数组中各个最大值放入一个一维数组中。再在一维数组中取出最大值。

注意事项:

    使用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分

0 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论