C++ Google Kickstart 2020给出了一个错误的答案:我的代码怎么了?

C++ Google Kickstart 2020给出了一个错误的答案:我的代码怎么了?,c++,algorithm,sorting,C++,Algorithm,Sorting,有N栋房子待售。买第i栋房子要花Ai美元。你的预算是B美元。你最多能买多少套房子 我的算法很简单。通过将所有房价添加到一个由优先级队列表示的最小堆中,对所有房价进行排序,然后在计算过程中从队列中弹出价格,直到达到预算为止 所以我真的不明白为什么我的代码甚至不能通过第一个测试用例。任何建议都将不胜感激 这是我的密码: #include <iostream> #include <bits/stdc++.h> using namespace std;

有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所提到的whilesum
另外,您在两个嵌套循环中使用相同的变量i,将其更改为其他变量

您可以提供测试输入、预期输出和失败输出吗?如果优先级队列变为空且sum