51nod1118(递推)
题目链接: https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1118
题意: 中文题诶~
思路: 因为机器人只能往下或者右走, 那么方格第一行和第一列肯定全为1, 并且mp[i][j]=mp[i-1][j]+mp[i][j-1], i, j分别表示行数和列数, 因为坐标(i, j)只能由坐标(i-1, j), (i, j-1)到达嘛,然后由加法原理依次地推出所有坐标就好啦~
代码:
1 #include <bits/stdc++.h>
2 #define MAXN 1010
3 #define ll long long
4 using namespace std;
5
6 ll mp[MAXN][MAXN];
7 const ll mod=1e9+7;
8
9 int main(void){
10 int m, n;
11 scanf("%d%d", &n, &m);
12 for(int i=0; i<n; i++){
13 mp[i][0]=1;
14 }
15 for(int j=0; j<m; j++){
16 mp[0][j]=1;
17 }
18 for(int i=1; i<n; i++){
19 for(int j=1; j<m; j++){
20 mp[i][j]=mp[i-1][j]+mp[i][j-1];
21 if(mp[i][j]>mod){
22 mp[i][j]%=mod;
23 }
24 }
25 }
26 printf("%lld\n", mp[n-1][m-1]);
27 return 0;
28 }
我就是我,颜色不一样的烟火 --- geloutingyu