百度9.14笔试大胃王,提示运行错误,数组越界有大佬解答吗

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

int main() {
	int n;
	cin >> n;
	for (int var = 0; var < n; ++var) {
		int siz;
		int k;
		cin >> siz >> k;
		if (siz == 0 || siz > 1000) {
			cout << -1 << endl;
			break;
		}
		if (k == 0 || k > 10000) {
			cout << -1 << endl;
			break;
		}
		vector<pair<int, int>> v(siz);
		for (int var = 0; var < v.size(); ++var) {/*记录菜序号和菜量*/
			pair<int, int> p;
			p.first = var + 1;
			cin >> p.second;
			v.at(var) = p;
		}
		if (v.size()) {
			sort(v.begin(), v.end(), [](pair<int, int> x, pair<int, int> y) {/*菜按菜量排序*/
				return (int) (x.second >= y.second);
			});
		}

		vector<int> ans;
		int sum = 0;
		int i = 0;
		bool ok = 0;
		while (v.size() > 0 && i < v.size()) {/*从大到小开始吃,吃了的放进ans*/
			sum += v.at(i).second;
			ans.push_back(v.at(i).first);
			if (sum >= k) {
				ok = 1;
				break;
			}
			i++;
		}
		if (!ok) {
			cout << -1 << endl;
		} else {
			cout << ans.size() << endl;
			for (int var = 0; var < ans.size(); ++var) {
				if (var == ans.size() - 1) {
					cout << ans.at(var);
					break;
				}
				cout << ans.at(var) << ' ';
			}
			cout << endl;
		}
	}

	return 0;
}

百度9.14笔试大胃王,提示运行错误,数组越界有大佬解答吗

#笔试题目##百度#
全部评论
第一层循环变量用了var: for (int var = 0; var < n; ++var) { 最后输出答案的时候也用了var:for (int var = 0; var < ans.size(); ++var) {
点赞 回复 分享
发布于 2020-09-14 22:06

相关推荐

从24年初开学开始接触到前端,和实验室几个同学一起学习,可似乎我总比他们慢一步,每每学完一个地方,我掌握的程度好像都不比他们,第一次实验室的任务实战,我两眼一抹黑,完全不知道从何下手,而他们却是游刃有余,可我当时没有丧气,只有一个念头,既然学习能力不如他们,那我就拿更多的时间去学,于是我把打游戏,运动锻炼的时间也拿来学习。到了暑假,实验室一起做项目,为了可以更好的参与进去,于是我暑假开始留校和同学师哥一起做项目,每天早上九点多去实验室,晚上十点多回宿舍,校田径队的训练没有去,中间也只回家待了一周。到暑假结束开学之后,一位很优秀的师哥拿到了几个offer,我从他身上看到了希望,双非本科就业的希望...
offer求求哩:我的评价是认知低,建议多看书,认知低的一个表现是人生仿佛没考上大学就是进厂,考上了就是考研考公找工作。股市里有一个很有意思的故事,说的是当门口大妈都在谈论股票的时候,说明行情已经见顶了。当你的父母在某些事上没有成功却支持你说明事情可能已经不可靠了,但在某些事上反对你,说明这件事可能还有成功的可能。(仅个人观点)😆😆
点赞 评论 收藏
分享
2024-12-12 11:28
已编辑
门头沟学院 广告设计
HaWK2n:姐,你那在校时间写的都不对吧,你要写你的入学时间而不是学校改名的时间,就算是学校改名字了也应该写个括号加上,而不是一会山东航空学院一会滨州学院
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务