NYOJ題目171 聰明的kk(dp

2021-08-07 13:57:34 字數 1191 閱讀 3979

時間限制:

1000 ms  |  記憶體限制:

65535 kb

難度:3 描述

聰明的「kk」

可移動「沙丘」變戲法 的靈感源於其獨特而雄偉的自然景觀——富於傳奇色彩的險峻沙丘。巨集偉的結構、可迴圈的建材,與大自然相得益彰。環繞一周,發現它正是從沙丘那不斷變換的形態中汲取靈感的。外形逼真到無論從哪個角度去觀察,都能清楚地辨識出沙丘的特徵。

它「坡面」高達20公尺,微風吹來,你是否感覺到沙的流動?用手去觸碰,卻發現原來是「魔術戲法」。它表面的不鏽鋼面板呈現出一種富於變幻的色彩,從不同角度觀察,呈現不同色澤,由此來模仿流動沙丘的光感。

走進第三展廳有乙個超大的螢幕,通過奇妙的特效,讓觀眾猶如親身來到浩瀚的沙漠。更為奇妙的是,只見乙個小動物「kk」正從沙漠區域(矩形)的左上角沿著向右或向下的方向往右下角跑去。kk太聰明了,它居然能在跑的過程中會選擇吃掉盡可能多的蟲子線路。

你知道它吃掉多少蟲子嗎?

輸入第一行:n m (1≤n m≤20 0≤xij≤500(i=1,2„.n, j=1,2„,m)

)表示沙漠是乙個n*m的矩形區域

接下來有n行:每行有m個正整數,xi1 xi2 ……xim 表示各位置中的蟲子數(單個空格隔開)

假設「kk」只能向右走或向下走。

輸出輸出有乙個整數, 表示「kk」吃掉最多的蟲子數。

樣例輸入

3 4

3 1 2 8

5 3 4 6

1 0 2 3

樣例輸出

24

解題思路:

題目要求吃的蟲子最多,也就是從左上角到右下角過程中經過的數字加和最大,用動態規劃的思想,我們可以算出走到每乙個位置的時候吃了多少蟲子,最後輸出右下角最後乙個位置的蟲子數就好。

dp[i][j] = a[i][j] + max(dp[i-1][j] , dp[i][j-1])

每個位置蟲子數加上上乙個位置累加的蟲子數,上乙個位置用max進行一次判斷,取最大。

#include #include #include #include using namespace std;

int a[21][21];

int dp[21][21];

int main()

} memset(dp,0,sizeof(dp));

for(int i=1;i<=n;i++)

}cout<

nyoj171聰明的KK DP入門

時間限制 1000 ms 記憶體限制 65535 kb 難度 3描述 聰明的 kk 可移動 沙丘 變戲法 的靈感源於其獨特而雄偉的自然景觀 富於傳奇色彩的險峻沙丘。巨集偉的結構 可迴圈的建材,與大自然相得益彰。環繞一周,發現它正是從沙丘那不斷變換的形態中汲取靈感的。外形逼真到無論從哪個角度去觀察,都...

NYOJ 171 聰明的kk 填表法 普通dp

時間限制 1000 ms 記憶體限制 65535 kb 難度 3 描述 聰明的 kk 可移動 沙丘 變戲法 的靈感源於其獨特而雄偉的自然景觀 富於傳奇色彩的險峻沙丘。巨集偉的結構 可迴圈的建材,與大自然相得益彰。環繞一周,發現它正是從沙丘那不斷變換的形態中汲取靈感的。外形逼真到無論從哪個角度去觀察,...

聰明的kk nyoj 171 動態規劃

本題是乙個很基礎的動態規劃,與動態規劃裡的最短路徑類似。本題可以採用標記陣列,也可以不採用標記陣列。本 未採用標記陣列 本題的動規思想主要是每一步的最優解都取決於上一步的最優解,以達到整體最優的目的。如下 include define max a,b a b?a b define max n 25 ...