阿里笔试4.27场

第二题
勇者和怪物各三个属性,血量H,攻击力A,防御力D
回合制战斗,伤害计算max(A-D, 1)
每战胜一只怪物,奖励三选一:H+1000,A+10或D+10
最多战胜多少
#include <iostream>
#include <vector>
#include <queue>
using namespace std;

struct Hero
{  int H;  int A;  int D; 
   ***t H_, int A_, int D_ ) : H(H_), A(A_), D(D_) {};
};

bool fight(Hero &hero, Hero monster)
{
	while (hero.H > 0 && monster.H > 0)
	{
		monster.H -= max(hero.A - monster.D, 1);
		if (monster.H <= 0) return true;
		hero.H -= max(monster.A - hero.D, 1);
		if (hero.H <= 0) return false;
	}
}

int main()
{
	int H, A, D, n;
	cin >> H >> A >> D >> n;

	Hero hero(H, A, D);
	vector<Hero> monsters;
	for (int i = 0; i < n; i++)
	{
		cin >> H>> A>> D;
		Hero monster(H, A, D);
		monsters.push_back(monster);
	}

	int successNumber = 0;
	queue<Hero> qHeroStatus;
	qHeroStatus.push(hero);
	while (!qHeroStatus.empty())
	{
		int sz = qHeroStatus.size();
		bool flag = false;

		for (int i = 0; i < sz; i++)
		{
			Hero tmpHero = qHeroStatus.front();
			qHeroStatus.pop();

			//fight
			if (fight(tmpHero, monsters[successNumber]))
			{
				flag = true;
				Hero tmp1 = tmpHero, tmp2 = tmpHero, tmp3 = tmpHero;
				tmp1.H += 1000;
				tmp2.A += 10;
				tmp3.D += 10;
				qHeroStatus.push(tmp1);
				qHeroStatus.push(tmp2);
				qHeroStatus.push(tmp3);	
			}
		}

		if(flag) successNumber++;
		if (successNumber == n) break;
	}

	cout << successNumber ;

	return 0;
}


#阿里笔试2020##阿里巴巴##笔试题目#
全部评论
AC了吗,感觉fight里面可以优化,分别算两边死亡的回合数,回合数小的先死,不需要一直while模拟。 看了题目感觉n<=200,第一时间觉得深搜复杂度是3^200就觉得不行。😂
1 回复 分享
发布于 2020-04-30 19:40
dalao有题目吗
点赞 回复 分享
发布于 2020-05-01 19:16
tql
点赞 回复 分享
发布于 2020-04-30 15:19
打完怪物之后自动满血?????我考虑的掉血,其他代码都是一样的
点赞 回复 分享
发布于 2020-04-28 00:43
大佬有第一题代码吗,我觉得和leetcode上994腐烂的橘子有点像
点赞 回复 分享
发布于 2020-04-27 21:30

相关推荐

05-11 11:48
河南大学 Java
程序员牛肉:我是26届的双非。目前有两段实习经历,大三上去的美团,现在来字节了,做的是国际电商的营销业务。希望我的经历对你有用。 1.好好做你的CSDN,最好是直接转微信公众号。因为这本质上是一个很好的展示自己技术热情的证据。我当时也是烂大街项目(网盘+鱼皮的一个项目)+零实习去面试美团,但是当时我的CSDN阅读量超百万,微信公众号阅读量40万。面试的时候面试官就告诉我说觉得我对技术挺有激情的。可以看看我主页的美团面试面经。 因此花点时间好好做这个知识分享,最好是单拉出来搞一个板块。各大公司都极其看中知识落地的能力。 可以看看我的简历对于博客的描述。这个帖子里面有:https://www.nowcoder.com/discuss/745348200596324352?sourceSSR=users 2.实习经历有一些东西删除了,目前看来你的产出其实很少。有些内容其实很扯淡,最好不要保留。有一些点你可能觉得很牛逼,但是面试官眼里是减分的。 你还能负责数据库表的设计?这个公司得垃圾成啥样子,才能让一个实习生介入数据库表的设计,不要写这种东西。 一个公司的财务审批系统应该是很稳定的吧?为什么你去了才有RBAC权限设计?那这个公司之前是怎么处理权限分离的?这些东西看着都有点扯淡了。 还有就是使用Redis实现轻量级的消息队列?那为什么这一块不使用专业的MQ呢?为什么要使用redis,这些一定要清楚, 就目前看来,其实你的这个实习技术还不错。不要太焦虑。就是有一些内容有点虚了。可以考虑从PR中再投一点产出
点赞 评论 收藏
分享
吴offer选手:HR:我KPI到手了就行,合不合适关我什么事
点赞 评论 收藏
分享
评论
1
8
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务