天天看點

C/C++描述 第十一屆藍橋杯省賽 第一場(2020.7.5) 試題 H: 走方格 題目+題解

第十一屆藍橋杯省賽C/C++大學B組 第一場

  大家好,我叫亓官劼(qí guān jié )
C/C++描述 第十一屆藍橋杯省賽 第一場(2020.7.5) 試題 H: 走方格 題目+題解

試題 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;
}