列表

详情


NC21742. 两个机器人

描述

你有两个机器人,站在平面上的两个点上,(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

原站题解

上次编辑到这里,代码来自缓存 点击恢复默认模板

C 解法, 执行用时: 15ms, 内存消耗: 504K, 提交时间: 2021-06-23 14:00:28

#include <stdio.h>
int main ()
{
	int a,b,c,d,x,y,i;
	char s[100];
	scanf("%d%d%d%d",&a,&b,&c,&d);
	x=a-c;
	y=b-d;
	if(x<0) x=-x;
	if(y<0) y=-y;
	scanf("%s",s);
	for(i=0;s[i]!='\0';i++)
	{
		if(s[i]=='U'||s[i]=='D') y--;
		else if(s[i]=='R'||s[i]=='L') x--;
	}
	if(x<=0&&y<=0) printf("Explosion");
	else printf("Safe");
	return 0;
}

C++14(g++5.4) 解法, 执行用时: 7ms, 内存消耗: 524K, 提交时间: 2020-02-10 19:14:14

#include<iostream>
#include<cmath>
using namespace std;
int xa, ya, xb, yb, xum = 0, yum = 0;
int main()
{
	cin>>xa>>ya>>xb>>yb;
	char x;
	while(cin>>x)
	{
		if(x == 'U' || x == 'D')
			yum++;
		else
			xum++;
	}
	if(xum >= fabs(xa-xb) && yum >= fabs(ya-yb))
		cout<<"Explosion"<<endl;
	else
		cout<<"Safe"<<endl;
}

C++(clang++ 11.0.1) 解法, 执行用时: 3ms, 内存消耗: 536K, 提交时间: 2022-08-07 16:18:42

#include<iostream>
using namespace std;
string s;
int x,y;
int main()
{
    int lsa,lsb,lsx,lsy; cin>>lsa>>lsb>>lsx>>lsy;
    cin>>s;
    for(int i=0; i<s.size(); i++) 
        if(s[i]=='L'||s[i]=='R') x++;
        else y++;
    if(abs(lsa-lsx)<=x && abs(lsb-lsy)<=y) puts("Explosion");
    else puts("Safe");
}

Python3(3.5.2) 解法, 执行用时: 34ms, 内存消耗: 3432K, 提交时间: 2019-12-22 22:27:40

x1, y1, x2, y2 = map(int, input().split())
cmd = input()
dx, dy = abs(x1-x2), abs(y1-y2)
if dx <= cmd.count('R')+cmd.count('L') and dy <= cmd.count('U')+cmd.count('D'):
    print("Explosion")
else:
    print("Safe")

上一题