51nod 1118 机器人走方格

基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题

M * N的方格,一个机器人从左上走到右下,只能向右或向下走。有多少种不同的走法?由于方法数量可能很大,只需要输出Mod 10^9 + 7的结果。

Input

第1行,2个数M,N,中间用空格隔开。(2 <= m,n <= 1000)

Output

输出走法的数量。

Input示例

2 3

Output示例

3

棋盘dp屠龙宝刀点击就送
#include <cstdio>
int dp[1001][1001],n,m,ans;
int main()
{
    for(int i=1;i<=1001;++i)
    {
        dp[1][i]=1;
        dp[i][1]=1;
    }
    scanf("%d%d",&m,&n);
    for(int i=2;i<=m;++i)
    {
        for(int j=2;j<=n;++j)
        {
            dp[i][j]=dp[i-1][j]+dp[i][j-1];
            dp[i][j]%=1000000007;
        }
    }
    printf("%d",dp[m][n]);
}

				
时间: 2024-10-12 20:16:21

51nod 1118 机器人走方格的相关文章

51nod 1118 机器人走方格 (小数据用dp)

1118 机器人走方格 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题 收藏 关注 取消关注 M * N的方格,一个机器人从左上走到右下,只能向右或向下走.有多少种不同的走法?由于方法数量可能很大,只需要输出Mod 10^9 + 7的结果. Input 第1行,2个数M,N,中间用空格隔开.(2 <= m,n <= 1000) Output 输出走法的数量. Input示例 2 3 Output示例 3 设dp[i][j]表示走到第i行第j列有多少种走法.状态转移

(DP)51NOD 1118 机器人走方格

M * N的方格,一个机器人从左上走到右下,只能向右或向下走.有多少种不同的走法?由于方法数量可能很大,只需要输出Mod 10^9 + 7的结果. Input 第1行,2个数M,N,中间用空格隔开.(2 <= m,n <= 1000) Output 输出走法的数量. Input示例 2 3 Output示例 3解:简单dp,注意空间复杂度的优化. 1 #include <stdio.h> 2 3 #define MOD ((int)1e9+7) 4 5 int dp[1005] =

51Nod 1118 机器人走方格--求逆元

(x/y) %mod =x*(y^(mod-2))%mod; 在算x,y的时候可以一直mod 来缩小 y^(mod-2)显然是个快速幂 #include <iostream> #include <stdio.h> #include <math.h> using namespace std; long long mod=1e+9+7; long long quick(long long n,long long m) { long long ans=1; while(m)

51nod 1119 机器人走方格 V2 (组合数学+逆元)

1119 机器人走方格 V2 基准时间限制:1 秒 空间限制:131072 KB 分值: 10 难度:2级算法题 收藏 关注 取消关注 M * N的方格,一个机器人从左上走到右下,只能向右或向下走.有多少种不同的走法?由于方法数量可能很大,只需要输出Mod 10^9 + 7的结果. Input 第1行,2个数M,N,中间用空格隔开.(2 <= m,n <= 1000000) Output 输出走法的数量 Mod 10^9 + 7. Input示例 2 3 Output示例 3 分析:因为只能向

51Nod——N1118 机器人走方格

https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1118 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题  收藏  关注 M * N的方格,一个机器人从左上走到右下,只能向右或向下走.有多少种不同的走法?由于方法数量可能很大,只需要输出Mod 10^9 + 7的结果. Input 第1行,2个数M,N,中间用空格隔开.(2 <= m,n <= 1000) Output 输出走法的数量.

51NOD 1120 机器人走方格 V3(卢卡斯定理 + 非降路径)

传送门 N * N的方格,从左上到右下画一条线.一个机器人从左上走到右下,只能向右或向下走.并要求只能在这条线的上面或下面走,不能穿越这条线,有多少种不同的走法?由于方法数量可能很大,只需要输出Mod 10007的结果. Input 输入一个数N(2 <= N <= 10^9). Output 输出走法的数量 Mod 10007. Input示例 4 Output示例 10 解题思路: 从左上做到右下只能向右护着向下走,就是相当于从左下走到右上的一条非降路径,然后中间加了一些障碍,其实就是从(

51nod 1120 机器人走方格 V3 卡特兰数 lucas定理

N * N的方格,从左上到右下画一条线.一个机器人从左上走到右下,只能向右或向下走.并要求只能在这条线的上面或下面走,不能穿越这条线,有多少种不同的走法?由于方法数量可能很大,只需要输出Mod 10007的结果. Input 输入一个数N(2 <= N <= 10^9). Output 输出走法的数量 Mod 10007. Input示例 4 Output示例 10 明显是一道卡特兰数,推出ans = C(2*n-2,n-1) * 2 / n % MOD先让n--,ans = C(2*n,n)

【51NOD-0】1118 机器人走方格

[算法]DP #include<cstdio> #include<algorithm> using namespace std; const int MOD=1000000007,maxn=1010; int f[maxn][maxn]; int mods(int x) {return x>MOD?x-MOD:x;} int main() { int n,m; scanf("%d%d",&n,&m); f[0][1]=1; for(int

51_1118 机器人走方格(组合+乘法逆元)

这道题要注意的是: 当单纯的用组合累乘的话 1000!即使long long也会溢出 , 所以只能乘一下, mod一下, 但是这样分子分母算出来后, 分子/分母 肯定就已经不是答案(因为 分子%mod / 分母%mod != ans%mod ), 此时, 就要用到乘法逆元. ax ≡ 1(mod m) , 则 t1 * x * t2 mod m = t1 -> t1 / t2 = t1* x mod m (将除法转换成乘法, 保证 t1/t2 的结果为 ans%mod ) 1118 机器人走方格