每日一题3.13.2
题目描述:一个n*m的格子,沿格子边缘从左上角走到右下角,只能向右和向下走,不能走回头路,求一共有多少条路径
解题思路: 将棋盘看成二维数组,起点为[0][0] 每次向右走则为[0][1],向下走为[1][0],排列组合算法,代码在编译器能实现,但没有通过case
代码实现:
#include<iostream>
using namespace std;
int processNew(int m, int n){
int **Q = new int*[m + 1];
for (int i = 0; i <= m; ++i){
Q[i] = new int[n + 1]();
}
//初始化
Q[0][0] = 0;
for (int j = 1; j <= n; ++j)
Q[0][j] = 1;
for (int i = 1; i <= m; ++i)
Q[i][0] = 1;
//迭代计算
for (int i = 1; i <= m; ++i){
for (int j = 1; j <= n; ++j){
Q[i][j] = Q[i - 1][j] + Q[i][j - 1];
}
}
int res = Q[m][n];
cout << res;
delete[] Q;
return res;
}
int main()
{
int n, m;
cin >> n >> m;
processNew(n, m);
system("pause");
return 0;
}
参考答案