网易雷火笔试第四题,求解(未解)

#include<iostream>
#include<cmath>
#include<algorithm>
#include<memory>
#include<string.h>
using namespace std;

int a[105][1005];
int maxh = 0;
int n, h;

struct node{
int x, y, z;
}b[105];

void dfs(int i,int hp ,int sp) {
if (i >= n || hp <= 0)return;
if (sp <= a[i][hp])return;
if (sp > a[i][hp])a[i][hp] = sp;
if (maxh < sp)maxh = sp;
dfs(i + 1, hp - b[i].x, sp + b[i].y);
dfs(i + 1, hp - b[i].z, sp);
}


int main() {
for (int i = 0; i < 101; i++)
for (int j = 0; j < 1001; j++)
a[i][j] = -1;
cin >> n >> h;
for (int i = 0; i < n; i++) {
cin >> b[n-i-1].x >> b[n-i-1].y >> b[n-i-1].z;
}
dfs(0, h, 0);
cout << maxh << endl;
}//这是小弟的代码,才疏学浅,感觉问题不大,可是过不了,如有大佬路过,请不吝赐教,还有吐槽雷火:问为什么样例下,x,y,z>100,回,请自行思考,呵呵!





#网易##笔试题目##春招#
全部评论
dp套0-1背包模板。消耗血量就是weight,获得经验就是value,每一层看作一个物品,这个物品0就是跳过,1就是打。
点赞 回复 分享
发布于 2019-03-18 00:38
难道我DFS写错了.. 我用的DFS只过了16%
点赞 回复 分享
发布于 2019-03-17 23:58
对,死了也能拿经验,,所以dp要从–1000到1000
点赞 回复 分享
发布于 2019-03-18 11:34
我dp的
点赞 回复 分享
发布于 2019-03-17 23:14
大佬过了几个题?
点赞 回复 分享
发布于 2019-03-17 23:14
递归实现就可以了,两种选择,一种打,一种不打,返回当中收益大者,注意递归结束条件就OK了。
点赞 回复 分享
发布于 2019-03-17 23:15
求dp解法,弱鸡只能过12.5%😭😭😭😭😭
点赞 回复 分享
发布于 2019-03-17 23:16
代码没保存  就是和三楼说的一样 打和不打
点赞 回复 分享
发布于 2019-03-17 23:19
讲道理dfs过不了吧。。。极端数据2^100效率。。。数据还是有点水了
点赞 回复 分享
发布于 2019-03-17 23:20
暴力dfs还真过了....... 话说第三题一直爆内存超了,有大佬出来讲解一下第三题正确做法吗?
点赞 回复 分享
发布于 2019-03-17 23:23
楼主还有其他题的图吗
点赞 回复 分享
发布于 2019-03-17 23:28
我是直接BFS的,这道题case就不对,数据范围问他结果回复自己思考也是佛了
点赞 回复 分享
发布于 2019-03-18 08:57
dp,一维房间,一维血量。有个细节是死了也能拿经验,所以不管能不能打得过,先上去冲一下就完事了(xx
点赞 回复 分享
发布于 2019-03-18 10:04

相关推荐

点赞 评论 收藏
分享
挣K存W养DOG:他真的很中意你,为什么不回他
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务