1. 题目
2. 代码
/*************************************************************************
> File Name: euler15.cpp
> Author:
> Mail:
> Created Time: Wed 31 Mar 2021 09:33:24 PM CST
************************************************************************/
#include<iostream>
using namespace std;
int main() {
long long dp[25][25] = {0};
for (int i = 1; i <= 21; i++) {
for (int j = 1; j <= 21; j++) {
if (i == 1 && j == 1) {
dp[i][j] = 1;
} else {
dp[i][j] = dp[i - 1][j] + dp[i][j - 1];
}
}
}
cout << dp[21][21] << endl;
return 0;
}
3. 思路
要点:
- 在原始矩阵周围存一圈0,减少边界判断
- 2 × 2 2\times 2 2×2的方格,需要计算 3 × 3 3 \times 3 3×3的顶点
- 初始化,第一个顶点,初始化为1。如果初始化为0的话,整体计算结果是0,没有意义。