小H和迷宫

链接:https://ac.nowcoder.com/acm/problem/15156
来源:牛客网
 

题目描述

    小H陷入了一个迷宫中,迷宫里有一个可怕的怪兽,血量有N点,小H有三瓶魔法药水,分别可以使怪兽损失a%、b%、c%的血量(之后怪兽的血量会向下取整),小H想合理地运用这三瓶药水,使怪兽失去尽可能多的血量

    注意:每瓶药水只能用一次

输入描述:

一行,四个整数 N,a,b,c

输出描述:

一行,一个整数w,表示最多能使得怪兽扣减多少血量

示例1

输入

100 20 15 0

输出

32

备注:

5≤N≤109,0≤a,b,c≤100

这里我用的全排列枚举

不然的话比如说这组数据

    105 20 25 0

105-(105*0.8+(84为105*0.8后向下取整)84*0.75) = 42
 

105-(105*0.75(78为105*0.75后向下取整)*0.8)=43

答案是不是不一样?

#include <stdio.h>
#include <string>
#include <math.h>
#include <iostream>
#include <algorithm>
using namespace std;
bool cmp(long long a,long long b){
	return a>b;
}
int main(){
	long long n,a,b,c;
	long long num[10010];
	scanf("%lld%lld%lld%lld",&n,&a,&b,&c);

	num[0]=a;
	num[1]=b;
	num[2]=c;
	
	sort(num,num+3,cmp);
	long long m=-1;
	do{
		long long sum=0;
		sum=n*(100-num[0])/100;//剩余血量
		sum=sum*(100-num[1])/100;
		sum=sum*(100-num[2])/100;
		sum=n-sum;
		m=max(m,sum);
	}while(next_permutation(num,num+3));
	printf("%lld",m);
	return 0;
} 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
创建一个C语言的迷宫小游戏是一个有趣的项目,它涉及到控制台输入输出、数组或矩阵操作以及游戏循环。以下是一个简化的迷宫游戏的示例代码,主要包含了基本的迷宫生成和玩家移动功能: ```c #include <stdio.h> #include <stdlib.h> #define MAZE_WIDTH 20 #define MAZE_HEIGHT 10 #define WALL '#' #define PATH ' ' // 创建随机迷宫的函数 void create_maze(int maze[MAZE_WIDTH][MAZE_HEIGHT]) { int i, j; for (i = 0; i < MAZE_HEIGHT; ++i) { for (j = 0; j < MAZE_WIDTH; ++j) { if ((i == 0 && j == 0) || (i == MAZE_HEIGHT - 1 && j == MAZE_WIDTH - 1)) { maze[i][j] = PATH; } else { maze[i][j] = WALL; int chance = rand() % 3; if (chance < 2) { maze[i][j] = PATH; } } } } } // 游戏主函数 int main() { int maze[MAZE_WIDTH][MAZE_HEIGHT]; srand(time(NULL)); // 初始化随机数种子 create_maze(maze); // 打印迷宫 for (int i = 0; i < MAZE_HEIGHT; ++i) { for (int j = 0; j < MAZE_WIDTH; ++j) { printf("%c ", maze[i][j]); } printf("\n"); } int player_x = 0, player_y = 0; // 假设玩家开始在左上角 while (1) { // 输入玩家移动方向(上、下、左、右) printf("Enter direction (up, down, left, right): "); char move; scanf(" %c", &move); // 根据玩家位置和移动方向更新位置 switch (move) { case 'u': if (maze[player_y - 1][player_x] == PATH) { player_y--; } else { printf("Cannot move up.\n"); } break; // 添加其他方向的检查 } // 判断是否到达终点或撞墙 if (player_y == MAZE_HEIGHT - 1 && player_x == MAZE_WIDTH - 1) { printf("Congratulations! You have reached the exit!\n"); break; } } return 0; } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值