NC21742. 两个机器人
描述
输入描述
第一行输入四个整数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")