1002過河卒打卡第一天

2021-10-05 11:27:14 字數 1220 閱讀 9987

一、題目描述

棋盤上 aa 點有乙個過河卒,需要走到目標 bb 點。卒行走的規則:可以向下、或者向右。同時在棋盤上 cc 點有乙個對方的馬,該馬所在的點和所有跳躍一步可達的點稱為對方馬的控制點。因此稱之為「馬攔過河卒」。

棋盤用座標表示,aa 點 (0, 0)(0,0)、bb 點 (n, m)(n,m),同樣馬的位置座標是需要給出的。

現在要求你計算出卒從 aa 點能夠到達 bb 點的路徑的條數,假設馬的位置是固定不動的,並不是卒走一步馬走一步。

輸入格式

一行四個正整數,分別表示 bb 點座標和馬的座標。

輸出格式

乙個整數,表示所有的路徑條數。

輸入輸出樣例

輸入 #1複製

6 6 3 3

輸出 #1複製

6說明/提示

對於 100 %100% 的資料,1 \le n, m \le 201≤n,m≤20,0 \le0≤ 馬的座標 \le 20≤20。

二、解題思路(學習成果)

首先可以感知到這是乙個動態規劃的題目。

這時候就是要分為兩個部分來解決問題,第乙個特殊點的確定,第二個轉移方程

特殊點的確定

1、棋盤上馬點和馬可到達的點

2、邊界點(因為邊界只有一種走法)

如以上的圖,設定不可走點為-1,在邊界點上如果一直沒有遇到紅點的話就可以設定為1,遇到紅點不用設定,預設為0,因為無法走一下的邊界點(這裡無法理解的,想想卒無法向左向上走)

三、之後是核心方程,map[i][j]=map[i-1][j]+map[i][j-1]

如何理解,就是從後往前推,這個點的可走條數是右點可走條數加上上點可走條數之和。

**如下:

#includeusing namespace std;

typedef long long int ll;

ll map[25][25]=;//定義乙個棋盤

int a,b,n,m,mn[9]=,mm[9]=;//這兩個陣列是判斷八個點。

void setr()

for(i=0;i<=b;i++)//設定邊緣,行

}for(i=0;i<=a;i++)//設定邊緣,列

}}int main()

//核心方程

}/* for(int i=0;i<=a;i++)

cout<}

cout

}

打卡第一天

打卡第一天 昨天做了兩套綜合,沒有做物理 記了30個單詞,今天再看時發現效果不是很好,導致今天再看時花費的時間有點長,晚上應該再看看複習一下的 昨天下了keep鍛鍊並測試了一下,用了1個小時,感覺很好,今天要繼續。昨天的時間安排的有些都沒完成,中午有點偷懶在寢室就沒來教室寫試卷,晚上就在弄點贊幣轉賬...

第一天打卡

希望自己能成為乙個夢想鑄造師 toc 你好!這是你第一次使用markdown編輯器所展示的歡迎頁。如果你想學習如何使用markdown編輯器,可以仔細閱讀這篇文章,了解一下markdown的基本語法知識。全新的介面設計,將會帶來全新的寫作體驗 在創作中心設定你喜愛的 高亮樣式,markdown將 片...

第一天打卡

部落格第一天 實力打卡,記錄點滴。有進步就好,最起碼了解自己,知道自己幹什麼了。回想今天,工作最開心的就是和客戶溝通,了解問題,解決問題。即使沒有任務在手,幫解決問題,心情也挺好。喜歡這樣的客戶,也許這樣的客戶也喜歡我這樣的吧!我時刻保持一種想的美的心態。才不會很累。忘掉過去。近期在讀一本書,書的名...