(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] = {1};
 6
 7 int main()
 8 {
 9     int m, n;
10     while (scanf_s("%d%d", &m, &n) != EOF)
11     {
12         for (int i = 0; i < m; i++)
13         {
14             for (int j = 1; j < n; j++)
15             {
16                 dp[j] = (dp[j - 1] + dp[j]) % MOD;
17             }
18         }
19         printf("%d\n", dp[n - 1]);
20     }
21 }

原文地址:https://www.cnblogs.com/Ekalos-blog/p/9726903.html

时间: 2024-10-09 10:21:12

(DP)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列有多少种走法.状态转移

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][100

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 机器人走方格