第十一屆藍橋杯省賽C/C++大學B組 第一場
大家好,我叫亓官劼(qí guān jié )
試題 H: 走方格
時間限制: 1.0s 記憶體限制: 512.0MB 本題總分:20 分
【問題描述】
在平面上有一些二維的點陣。
這些點的編号就像二維數組的編号一樣,從上到下依次為第 1 至第 n 行,
從左到右依次為第 1 至第 m 列,每一個點可以用行号和列号來表示。
現在有個人站在第 1 行第 1 列,要走到第 n 行第 m 列。隻能向右或者向下
走。
注意,如果行号和列數都是偶數,不能走入這一格中。
問有多少種方案。
【輸入格式】
輸入一行包含兩個整數 n, m。
【輸出格式】
輸出一個整數,表示答案。
【樣例輸入】
3 4
【樣例輸出】
2
【樣例輸入】
6 6
【樣例輸出】
【評測用例規模與約定】
試題H 題解
#include <iostream>
#include <vector>
using namespace std;
int main(){
int n,m;
cin>>n>>m;
vector<vector<int>> dp(n+1,vector<int>(m+1));
for(int i = 1;i <= n;i++){
dp[i][1] = 1;
}
for (int j = 1; j <= m; ++j) {
dp[1][j] = 1;
}
for(int i = 2;i <= n;i++){
for (int j = 2; j <= m; ++j) {
if(i%2==0 && j%2==0)
continue;
else
dp[i][j] = dp[i-1][j] + dp[i][j-1];
}
}
cout<<dp[n][m];
return 0;
}