国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

動態規劃(2)

2019-11-08 18:46:15
字體:
來源:轉載
供稿:網友

題目 trs喜歡滑雪。他來到了一個滑雪場,這個滑雪場是一個矩形,為了簡便,我們用r行c列的矩陣來表示每塊地形。為了得到更快的速度,滑行的路線必須向下傾斜。 例如樣例中的那個矩形,可以從某個點滑向上下左右四個相鄰的點之一。例如24-17-16-1,其實25-24-23…3-2-1更長,事實上這是最長的一條。

輸入格式:

第1行: 兩個數字r,c(1< =r,c< =100),表示矩陣的行列。 第2..r+1行:每行c個數,表示這個矩陣。

輸出格式:

僅一行: 輸出1個整數,表示可以滑行的最大長度。

樣例輸入

5 5 1 2 3 4 5 16 17 18 19 6 15 24 25 20 7 14 23 22 21 8 13 12 11 10 9 樣例輸出

25


分析題目: 題目是從某個點出發,那么假設先從h[0][0]開始 它的初始值距離為1,而后向選擇4個方向走 有f[i][j]表示每個起始點的最大滑行距離,然后用dfs記憶搜索

狀態轉移方程

f[x][y] = max(f[x][y], DFS(x, y - 1) + 1); f[x][y] = max(f[x][y], DFS(x, y - 1) + 1); f[x][y] = max(f[x][y], DFS(x + 1, y) + 1); f[x][y] = max(f[x][y], DFS(x, y + 1) + 1);


#include "bits/stdc++.h"using namespace std ;const int maxN = 110 ;int h[maxN][maxN] , f[maxN][maxN] ;int n, m, ans = 1;int DFS(int x, int y){ if( f[x][y] )//判斷是否被搜索過 return f[x][y]; f[x][y] = 1; if(x > 1 && h[x][y] < h[x - 1][y]) f[x][y] = max(f[x][y], DFS(x - 1, y) + 1); if(y > 1 && h[x][y] < h[x][y - 1]) f[x][y] = max(f[x][y], DFS(x, y - 1) + 1); if(x < n && h[x][y] < h[x + 1][y]) f[x][y] = max(f[x][y], DFS(x + 1, y) + 1); if(y < m && h[x][y] < h[x][y + 1]) f[x][y] = max(f[x][y], DFS(x, y + 1) + 1); ans = max(ans, f[x][y]); return f[x][y];}int main(){ scanf("%d%d", &n, &m); for ( int i = 1 ; i <= n ; i++ ) for ( int j = 1 ; j <= m ; j++ ) scanf( "%d" , &h[i][j] ) ; for(int i = 1 ; i <= n ; i++ ) for(int j = 1 ; j <= m ; j++ ) f[i][j] = DFS( i , j ) ;
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 弋阳县| 汝阳县| 舞阳县| 庆云县| 山丹县| 墨竹工卡县| 武功县| 习水县| 六枝特区| 德钦县| 鹿泉市| 美姑县| 临清市| 凤台县| 宣武区| 塘沽区| 吉木萨尔县| 五原县| 青海省| 金坛市| 寻甸| 鹿泉市| 将乐县| 高雄县| 余姚市| 霍城县| 饶平县| 木里| 永清县| 嘉荫县| 池州市| 福鼎市| 定边县| 张家川| 和田县| 晋江市| 涟源市| 峨边| 中宁县| 永城市| 永城市|