题目
现在有一个n×m矩阵,小红在(1,1),终点(n,m)。(1,1)在左上,(n, m)在右下。每次可以往下或者往右走,步数需要是奇数。
小红想知道她有多少种方案到终点,你能帮她算一下吗?
测试样例:
1
2 4
输出结果:6
2
5 4
3 6
输出结果:66
54
ps
对了,这题目和leetcode有一道很像,但是不一样
https://leetcode.cn/problems/unique-paths/
代码:
这个代码自己写的 没有提交,不确定对
#include<iostream>
#include<string>
#include<algorithm>
#include<vector>
using namespace std;
#define M 1000000007
int uniquePaths(int m, int n) {
vector<vector<int>> f(m, vector<int>(n));
f[0][0] = 1;
for (int i = 0; i < m; ++i) {
for (int j = 0; j < n; ++j) {
// f[i][j] = f[i - 1][j] + f[i][j - 1];
if(i == 0 && j == 0){
continue;
}
for(int k= j-1; k >= 0; k -= 2){
f[i][j]= (f[i][j] + f[i][k])% M;
}
for(int k= i-1 ;k >= 0;k -= 2){
f[i][j]= (f[i][j] + f[k][j])% M;
}
}
}
return f[m - 1][n - 1];
}
int main(){
int T;
cin>>T;
while(T--){
int m,n;
cin>>m>>n;
cout<< uniquePaths(m,n)<<endl;
}
}