题目链接: 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 }
时间: 2024-10-21 20:54:59