文章

3

粉丝

10

获赞

3

访问

378

头像
数字游戏 - 中南大学 题解:
P1934 中南大学2023年机试题
发布于2025年4月26日 23:56
阅读数 97

感觉这道题有点问题,因为用贪心思想居然能过,以下是ac的贪心代码。但是当n=3,m=6,数组元素分别为3 4 5时,实际答案是2,但是用以下代码则输出-1。这道题的正解应该是dfs与动态规划。

#include<bits/stdc++.h>
using namespace std;
bool cmp(int a, int b) {
    return a > b;
}
int main() {
    int t,n,m;
    cin >> t;
    while (t--) {
        cin >> n >> m;
        vector<int> v(n);
        for (int i = 0; i < n; i++)
            cin >> v[i];
        sort(v.begin(), v.end(), cmp);
        int ans = 0;
        for (int i = 0; i < n; i++) {
            while (m - v[i] >= 0)
                m -= v[i], ans++;
            if (m == 0)
                break;
        }
        cout << (m>0 ? -1 : ans) << endl;
    }
    return 0;
}

同样ac的dfs代码

#include<bits/stdc++.h>
using namespace std;
const int MAX = -(1 << 31) - 1;
bool cmp(int a, int b) {
    return a > b;
}
void dfs(vector<int> v,int k, int maxSelect,int m,int& ans, int& sum) {
    if (ans ...
登录查看完整内容


登录后发布评论

暂无评论,来抢沙发