(相關(guān)資料圖)
原題鏈接
這是一道經(jīng)典的動態(tài)規(guī)劃題目。
如果嘗試使用深度優(yōu)先搜索(dfs)或廣度優(yōu)先搜索(bfs)做就會獲得 TLE (注意數(shù)據(jù)范圍)。于是我們想到了更為高級的動態(tài)規(guī)劃(Dynamic Programming, dp)。
簡略介紹動態(tài)規(guī)劃算法的核心思想:把原問題分解為相對簡單的子問題的方式求解復(fù)雜問題。與遞推有幾分相似?遞推其實是動態(tài)規(guī)劃的一個分支!
在求解動態(tài)規(guī)劃這一類問題時,一般有三步:
在這道題目中,可以使用一個二維數(shù)組 dp[n][m] 來存放每一個子問題的答案,即用 dp[i][j] 來表示到達(dá)第i行第j列所需的最多步數(shù),dp[n][m] 也就是答案了。
由于過河卒初始就在第0列第0行,所以 dp[0][0] = 1;而他只能向下走或向右走,當(dāng)在第0行或第0列時,情況只有1種。
動態(tài)規(guī)劃一類題目中的最關(guān)鍵部分。過河卒只能向下走或向右走,故 dp[i][j] = dp[i-1][j] + dp[i][j-1]。
注意:還要注意馬可以到達(dá)的地方,過河卒不能到達(dá)。
1 #include2 using namespace std; 3 const int N = 25; 4 const int dir[][2] = { 5 {1, 2}, {1, -2}, {2, 1}, {2, -1}, 6 {-1, 2}, {-1, -2}, {-2, 1}, {-2, -1} 7 }; 8 long long dp[N][N]; 9 int n, m, sx, sy;10 bool vis[N][N];11 int main() {12 cin >> n >> m >> sx >> sy;13 vis[sx][sy] = true;14 for (int i = 0; i < 8; i ++){15 int tx = sx + dir[i][0];16 int ty = sy + dir[i][1];17 if (tx >= 0 && tx <= n && ty >= 0 && ty <= m)18 vis[tx][ty] = true;19 }20 dp[0][0] = 1;21 for (int i = 0; i <= n; i ++)22 for (int j = 0; j <= m; j ++)23 if (!vis[i][j]){24 if (i) dp[i][j] += dp[i - 1][j];25 if (j) dp[i][j] += dp[i][j - 1];26 }27 cout << dp[n][m];28 return 0;29 }
關(guān)鍵詞:
新聞發(fā)布平臺 |科極網(wǎng) |環(huán)球周刊網(wǎng) |tp錢包官網(wǎng)下載 |中國創(chuàng)投網(wǎng) |教體產(chǎn)業(yè)網(wǎng) |中國商界網(wǎng) |萬能百科 |薄荷網(wǎng) |資訊_時尚網(wǎng) |連州財經(jīng)網(wǎng) |劇情啦 |5元服裝包郵 |中華網(wǎng)河南 |網(wǎng)購省錢平臺 |海淘返利 |太平洋裝修網(wǎng) |勵普網(wǎng)校 |九十三度白茶網(wǎng) |商標(biāo)注冊 |專利申請 |啟哈號 |速挖投訴平臺 |深度財經(jīng)網(wǎng) |深圳熱線 |財報網(wǎng) |財報網(wǎng) |財報網(wǎng) |咕嚕財經(jīng) |太原熱線 |電路維修 |防水補(bǔ)漏 |水管維修 |墻面翻修 |舊房維修 |參考經(jīng)濟(jì)網(wǎng) |中原網(wǎng)視臺 |財經(jīng)產(chǎn)業(yè)網(wǎng) |全球經(jīng)濟(jì)網(wǎng) |消費(fèi)導(dǎo)報網(wǎng) |外貿(mào)網(wǎng) |重播網(wǎng) |國際財經(jīng)網(wǎng) |星島中文網(wǎng) |手機(jī)測評 |品牌推廣 |名律網(wǎng) |項目大全 |整形資訊 |整形新聞 |美麗網(wǎng) |佳人網(wǎng) |稅法網(wǎng) |法務(wù)網(wǎng) |法律服務(wù) |法律咨詢 |成報網(wǎng) |媒體采購網(wǎng) |聚焦網(wǎng) |參考網(wǎng)
中國資本網(wǎng) 版權(quán)所有
Copyright © 2011-2020 亞洲資本網(wǎng) All Rights Reserved. 聯(lián)系網(wǎng)站:55 16 53 8 @qq.com