这个题为什么Java错了换c语言就对了,同样的核心代码
Joler 在一个半径为𝑟(1 ≤ 𝑟 ≤ 100)的圆桌上玩机器人,他可以向机器人发送四种指令使它移 动。设机器人的位置为(𝑥, 𝑦),则他的指令效果如下:
U:移动到(𝑥 + 1, 𝑦);
D:移动到(𝑥 − 1, 𝑦);
R:移动到(𝑥, 𝑦 + 1);
L:移动到(𝑥, 𝑦 − 1);
机器人的起始位置在圆桌的正中心(0, 0)处,给出 Joler 的指令序列,机器人会严格按照顺序 执行指令。如果操作中的任意时刻机器人掉下了圆桌,则输出”Oops!”;反之若机器人全程 没有掉下圆桌,则输出”Perfect!”(均不含引号)
MaX 7 队——oj判全队 提交的代码
提交时间:2023-03-10 14:42:27 语言:Java 运行状态:答案错误
复制代码
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.math.BigInteger;
public class Main {
static BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
static PrintStream out = new PrintStream(System.out);
public static void main(String[] args) throws IOException {
String s[] = in.readLine().split(" ");
int n = Integer.valueOf(s[0]);
int r = Integer.valueOf(s[1]);
String str = in.readLine();
int x = 0, y = 0;
boolean p = false;
for(char c : str.toCharArray()){
if(c == 'U') x += 1;
else if (c == 'D') x -= 1;
else if (c == 'R') y += 1;
else if (c == 'L') y -=1;
if(x * x + y * y > r * r){
out.println("Oops!");
p = true;
}
}
if(!p)
out.println("Perfect!");
}
}
c语言
Joler 在一个半径为𝑟(1 ≤ 𝑟 ≤ 100)的圆桌上玩机器人,他可以向机器人发送四种指令使它移 动。设机器人的位置为(𝑥, 𝑦),则他的指令效果如下:
U:移动到(𝑥 + 1, 𝑦);
D:移动到(𝑥 − 1, 𝑦);
R:移动到(𝑥, 𝑦 + 1);
L:移动到(𝑥, 𝑦 − 1);
机器人的起始位置在圆桌的正中心(0, 0)处,给出 Joler 的指令序列,机器人会严格按照顺序 执行指令。如果操作中的任意时刻机器人掉下了圆桌,则输出”Oops!”;反之若机器人全程 没有掉下圆桌,则输出”Perfect!”(均不含引号)
MaX 7 队——oj判全队 提交的代码
提交时间:2023-03-10 15:18:34 语言:C 运行状态:答案正确
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include"stdio.h"
int main(){
int n,r;
scanf("%d%d",&n,&r);
int x,y;
x=y=0;
for(int i=0;i<n;i++){
char ch;
scanf("%c",&ch);
if(ch=='U')
x+=1;
else if(ch=='D') x-=1;
else if(ch=='R') y+=1;
else if(ch=='L') y-=1;
if(x*x + y*y > r*r){
printf("Oops!");
return 0;
}
}
if(x*x + y*y <= r*r)
printf("Perfect!");
}