m0_68417754 2023-09-11 17:11 采纳率: 0%
浏览 3

为什么以下代码无法运行

为什么以下代码无法运行,请求帮助

#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
bool cmp(vector<int> a ,vector<int> b){
    int t1 = a[0];
    int t2 = a[1];
    int t3 = b[0];
    int t4 = b[1];
    return 1>2;
}
int main(){
    int n,t;
    cin >> n >> t;
    vector<vector<int> > gold(100);
    for(int i=0;i<n;i++){
        gold[i].resize(2);
    }
    for(int i=0;i<n;i++){
        cin >> gold[i][0] >> gold[i][1];
    }
    double ans=0;
    sort(gold.begin(),gold.end(),cmp);
    for(int i=0;i<n;i++){
        if(t>gold[i][0]){
            ans+=gold[i][1];
            t-=gold[i][0];
        }else{
            ans+=gold[i][1]*t/gold[i][0]*1.0;
            break;
        }
    }
    cout << ans;
    return 0;
}
  • 写回答

2条回答 默认 最新

  • 卑以自牧w 2023-09-11 17:17
    关注
    
    #include <iostream>
    #include <algorithm>
    #include <vector>
    using namespace std;
    
    bool cmp(vector<int> a, vector<int> b) {
        return (double)a[1] / a[0] > (double)b[1] / b[0];
    }
    
    int main() {
        int n, t;
        cin >> n >> t;
    
        vector<vector<int>> gold(n, vector<int>(2));
        for (int i = 0; i < n; i++) {
            cin >> gold[i][0] >> gold[i][1];
        }
    
        double ans = 0;
        sort(gold.begin(), gold.end(), cmp);
    
        for (int i = 0; i < n; i++) {
            if (t >= gold[i][0]) {
                ans += gold[i][1];
                t -= gold[i][0];
            } else {
                ans += gold[i][1] * (double)t / gold[i][0];
                break;
            }
        }
    
        cout << ans << endl;
        return 0;
    }
    
    评论

报告相同问题?

问题事件

  • 创建了问题 9月11日