蛮分求条,斤氏后人,拿的说一声
查看原帖
蛮分求条,斤氏后人,拿的说一声
1554571
WeiCaoBoKai楼主2025/7/30 09:06
#include <algorithm>
#include <cstdio>
#include <cstring>
#include <iostream>
using namespace std;

int n, be, mimi, s[60];
bool dp[2][1010];

int main() {
    cin >> n >> be >> mimi;
    for (int i = 0; i < n; i++) cin >> s[i];

    dp[0][be] = true;
    for (int i = 0; i < n; i++)
        for (int j = mimi; j >= 0; j--)
            if (j - s[i] >= 0)
                if (j + s[i] <= mimi)
                    dp[(i + 1) & 1][j] = dp[i & 1][j - s[i]] || dp[i & 1][j + s[i]];
                else
                    dp[(i + 1) & 1][j] = dp[i & 1][j - s[i]];
            else if (j + s[i] <= mimi)
                dp[(i + 1) & 1][j] = dp[i & 1][j + s[i]];
            else
                dp[(i + 1) & 1][j] = false;

    for(int i = mimi; i >= 0; i--)
        if(dp[n & 1][i]){
            cout << i;
            return 0;
        }
    cout<<-1;

    return 0;
}
2025/7/30 09:06
加载中...