贪心——两个机器人

39 篇文章 1 订阅

贪心——两个机器人

题目描述

你有两个机器人,站在平面上的两个点上,(x1,y1) (x2,y2)
机器人每次可以向上下左右四个方向中的某个方向移动一个单位
你给两个机器人发送了同样的指令序列,一个指令需要花一秒执行
但是两个机器人可能有一些bug,他们各自可能会忽略掉一些指令,可能会忽略所有指令,也可能一个指令都不会忽略
两个机器人如果移动到了同一个位置就会爆炸
你的任务是判断是否有可能爆炸

输入描述:

第一行输入四个整数x1,y1,x2,y2
-25 ≤ x1,y1,x2,y2 ≤ 25
第二行输入一个字符串表示指令序列,包含’U’,‘R’,‘L’,'D’四种字符

输出描述:

如果可能爆炸输出"Explosion"
否则输出"Safe"

示例1

输入

1 0 2 0
L

输出

Explosion

示例2

输入

1 0 2 0
U

输出

Safe

示例3

输入

1 0 2 0
UL

输出

Explosion

备注:

子任务1:n <= 10
子任务2:n <= 20
子任务3:无限制

分析

对于位于(x1,y1),(x2,y2)的两个机器人,可能存在最极端的情况,对所有的指令,位于左边的机器人只往右走,位于右边的机器人只往左走,而位于上面的机器人往下走,位于下面的机器人往上走,那么如果x1-x2的绝对值小于等于L与R的指令的个数和并且y1-y2的绝对值小于等于U和D的指令的个数和时,那么它们就有可能会相遇,即可能会爆炸。

#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
int main()
{
	int x1,x2,y1,y2;
	char a[100];
	cin>>x1>>y1>>x2>>y2;
	getchar();
	cin>>a;
	int u=0,d=0,r=0,l=0;
	for(int i=0;a[i]!='\0';i++){
		switch(a[i]){
			case 'U':
				u++;
				break;
			case 'D':
				d++;
				break;
			case 'R':
				r++;
				break;
			case 'L':
				l++;
				break;
		}
	}
	if(abs(x1-x2)<=l+r&&abs(y1-y2)<=u+d){
		cout<<"Explosion"<<endl;
	}
	else{
		cout<<"Safe"<<endl;
	}
	return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值