百度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

相关推荐

Twilight_m...:表格简历有点难绷。说说个人看法: 1.个人基本情况里好多无意义信息,什么婚姻状况、健康状况、兴趣爱好、户口所在地、身份证号码、邮政编码,不知道的以为你填什么申请表呢。 2.校内实践个人认为对找工作几乎没帮助,建议换成和测开有关的项目,实在没得写留着也行。 3.工作经历完全看不出来是干什么的,起码看着和计算机没啥关系,建议加强描述,写点你在工作期间的实际产出、解决了什么问题。 4.个人简述大而空,看着像AI生成,感觉问题最大。“Python,C,C++成为我打造高效稳定服务的得力工具”、“我渴望凭借自身技术知识与创新能力,推动人工智能技术的应用发展,助力社会实现智能化转型”有种小学作文的美感。而且你确定你个人简述里写的你都会嘛?你AI这块写的什么“深入研究”,发几篇顶会的硕博生都不一定敢这么写。而且你AI这块的能力和软测也完全无关啊。个人简述建议写你对哪些技术栈、哪些语言、哪些生产工具的掌握,写的有条理些,而且最好是和测开强相关的。
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-25 17:51
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务