首页 > 试题广场 >

机器人达到指定位置方法数

[编程题]机器人达到指定位置方法数
  • 热度指数:7768 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
假设有排成一行的N个位置,记为1~N,开始时机器人在M位置,机器人可以往左或者往右走,如果机器人在1位置,那么下一步机器人只能走到2位置,如果机器人在N位置,那么下一步机器人只能走到N-1位置。规定机器人只能走k步,最终能来到P位置的方法有多少种。由于方案数可能比较大,所以答案需要对1e9+7取模。

输入描述:
输出包括一行四个正整数N(2<=N<=5000)、M(1<=M<=N)、K(1<=K<=5000)、P(1<=P<=N)。


输出描述:
输出一个整数,代表最终走到P的方法数对取模后的值。
示例1

输入

5 2 3 3

输出

3

说明

1).2->1,1->2,2->3

2).2->3,3->2,2->3

3).2->3,3->4,4->3
示例2

输入

1000 1 1000 1

输出

591137401

说明

注意答案要取模

备注:
时间复杂度,空间复杂度
头像 Bruce_Lee_
发表于 2021-03-03 19:39:02
import java.util.Scanner; public class Main{ public static int mod = (int)1e9+7; //暴力递归的解法 public static int walk(int N, int cur, int rest, i 展开全文
头像 罗毅lala
发表于 2020-03-15 21:45:56
#include<iostream> #include<vector> #include<cmath> using namespace std; //首先看到题目,可变参数只有两个 i和k;所以需要二维dp数组来表示其最优解; //但是最优解的过程往往是通过子问 展开全文
头像 joshua0509
发表于 2020-05-26 22:53:30
一维dp, 时间:O(n*k), 空间O(n) #include<bits/stdc++.h> using namespace std; typedef long long ll; #define pii pair<int, int> #define pll pair&l 展开全文
头像 快支棱起来的椰子很愤怒
发表于 2022-01-10 17:11:20
package main import ( "fmt" ) func main() { var n, m, k, p int var mod int = 1e9 + 7 fmt.Scan(&n, &m, &k, &p) dp 展开全文
头像 总之就是非常可爱
发表于 2022-02-09 12:44:33
//根据左边的暴力递归改出动态规划的版本 #include<bits/stdc++.h> using namespace std; int main(){     int N,M,K,P;     cin>>N>>M> 展开全文

问题信息

上传者:小小
难度:
22条回答 7945浏览

热门推荐

通过挑战的用户

查看代码
机器人达到指定位置方法数