贪婪算法-两个机器人

题目描述
你有两个机器人,站在平面上的两个点上,(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:无限制
解析:假定两个坐标的点,在移动时都朝对方移动。
代码

#include<iostream>
#include<cstdio>
#include<math.h>
#include<string.h>
using namespace std;
int main()
{
    int x1,y1,x2,y2;string s;
    scanf("%d %d %d %d\n",&x1,&y1,&x2,&y2);
    char str[1024]; 
    scanf("%s",str);//定义整数与字符串并输入
    int x=abs(x1-x2);int y=abs(y1-y2);//两点横坐标和纵坐标之差的绝对值 
    int l=strlen(str);//字符串长度
	int m=0,n=0;
    for(int i=0;i<l;i++)
    {
    	if(str[i]=='L'||str[i]=='R') m++;//左右移动 
    	if(str[i]=='U'||str[i]=='D') n++;//上下移动 
	}
	if(m>=x&&n>=y)
	{
		printf("Explosion");//移动的步数超过横纵坐标之差,会碰撞 
	}
	else{
		printf("Safe");
	}
    return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值