「金」点石成金(dfs)

传送门

题目大意:每次有两种选择,第一种是得到金钱,消耗魔法值。第二种是得到魔法值,消耗金钱。金钱和魔法值不够消耗时也可以消耗,该值置为0。求金钱*魔法值的最大值。

题解:范围很小,直接dfs爆搜即可。

「金」点石成金(dfs)

#include<bits/stdc++.h>
using namespace std;
const int maxn=20;
typedef long long ll;
struct node{
    ll a,b,c,d;
}tot[maxn];
ll ans,maxx=-0x3f3f3f;
int n;
void dfs(int k,ll m,ll c){
    if(k==n){
        ans=m*c;
        if(ans>maxx){
            maxx=ans;
        }
        return ;
    }
    if(c>tot[k].b)dfs(k+1,m+tot[k].a,c-tot[k].b);
    else dfs(k+1,m+tot[k].a,0);
    if(m>tot[k].d)dfs(k+1,m-tot[k].d,c+tot[k].c);
    else dfs(k+1,0,c+tot[k].c);
}
int main(){
    cin>>n;
    for(int i=0;i<n;i++){
        scanf("%ld%ld%ld%ld",&tot[i].a,&tot[i].b,&tot[i].c,&tot[i].d);
    }
    dfs(0,0,0);
    cout<<maxx<<endl;
    return 0;
}

View Code

 

原文链接: https://www.cnblogs.com/mohari/p/12969037.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍;

也有高质量的技术群,里面有嵌入式、搜广推等BAT大佬

    「金」点石成金(dfs)

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/350977

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年3月2日 上午6:37
下一篇 2023年3月2日 上午6:37

相关推荐