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

相关推荐

05-14 20:34
门头沟学院 Java
窝补药贝八股:管他们,乱说,反正又不去,直接说680
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

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