c++ - Google Kickstart 2020 Round A 错误答案:我的代码有什么问题?
问题描述
有 N 栋房屋待售。第 i 间房子花费 Ai 美元购买。你有 B 美元的预算要花。最多可以买多少套房子?
我的算法很简单。通过将所有房价添加到由优先级队列表示的最小堆中来对所有房价进行排序,然后将价格从队列中弹出(在您这样做时计数),直到您达到预算。
所以我真的不知道为什么我的代码甚至不能通过第一个测试用例。任何建议将不胜感激!
这是我的代码:
#include <iostream>
#include <bits/stdc++.h>
using namespace std;
int main() {
int t;
cin >> t; // read t. cin knows that t is an int, so it reads it as such.
for (int i = 1; i <= t; ++i) {
int N, B;
cin >> N >> B;
priority_queue <int, vector<int>, greater<int> > pq;
for(int i=0; i<N; i++){
int a;
cin >> a;
pq.push(a);
}
long sum = 0;
long count =0;
while(sum < B){
sum += pq.top();
pq.pop();
++count;
}
if(sum > B){
--count;
}
cout << "Case #" << i << ": " << count << endl;
}
return 0;
}
(此外,我已将问题提示附加为图像,因为过去我曾因将问题与问题提示混淆在一起而受到批评,但如果我选择的这种格式不好,请告诉我)
解决方案
有几件事可能会让你失望:
正如vivek_23所提到while(sum < B)
的,如果我们可以用我们的预算购买所有房屋,这个循环将出现运行时错误,请将其while(sum < B && !pq.empty())
改为。
此外,您在两个嵌套循环中都使用相同的变量i
将其更改为其他内容
推荐阅读
- rabbitmq - 检查rabbitmq服务器是否存活的方法
- java - Xodus:键和/或值是否有最大长度?
- angular - 如何在单击角度 4 中的按钮时添加新行
- r - 在 R 中使用 heatmap.2 增加 RowSideColors 和 Heatmap 之间的距离
- amazon-web-services - 执行 terraform 时收到错误消息:API 版本与插件不兼容。插件版本:4,客户端版本:[5]
- laravel - 在 Nginx(宅基地)上获取 laravel 应用程序漂亮的 URL 工作
- python-3.x - 为什么我使用 Twitter 搜索 API 会无限获得相同的推文?
- r - 如何处理ggplot2中的垂直渐近线
- firebase - 函数预部署错误:命令以非零退出代码终止
- python - 遇到 Python 3.6 运行时溢出