首页 > 试题广场 >

随机的机器人

[编程题]随机的机器人
  • 热度指数:1046 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
有一条无限长的纸带,分割成一系列的格子,最开始所有格子初始是白色。现在在一个格子上放上一个萌萌的机器人(放上的这个格子也会被染红),机器人一旦走到某个格子上,就会把这个格子涂成红色。现在给出一个整数n,机器人现在会在纸带上走n步。每一步,机器人都会向左或者向右走一个格子,两种情况概率相等。机器人做出的所有随机选择都是独立的。现在需要计算出最后纸带上红色格子的期望值。

输入描述:
输入包括一个整数n(0 ≤ n ≤ 500),即机器人行走的步数。


输出描述:
输出一个实数,表示红色格子的期望个数,保留一位小数。
示例1

输入

4

输出

3.4
用的随机。多试几次就过了。迭代次数越大越准,但超过70000左右就超时了
public class Main {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
int n = sc.nextInt();
sc.close();
double res = 0;
boolean b[] = new boolean[2 * n + 1];
for(int t = 0; t < 60000; t++) {
int p = n;
Arrays.fill(b, false);
for(int i = 0; i < n; i++) {
if(Math.random() > 0.5) {
p--;
} else {
p++;
}
b[p] = true;
}
for(int i = 0; i <= 2*n; i++) {
if(b[i]) {
res++;
}
}
}
System.out.println(String.format("%.1f",res /60000));
}
}
编辑于 2017-07-30 20:46:30 回复(2)

热门推荐

通过挑战的用户