Acm 聰明的kk

聰明的kk

時間限制: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
來源
第三屆河南省程序設計大賽
上傳者

苗棟棟



思路:

創建一個map[][]來存儲每個座標的值。依次向map中輸入map[i][j]時,判斷map[i][j-1]>map[i-1][j]即map[i][j]的上方和左方的最大值,將最大值與map[i][j]相加即爲(0,0)到(i,j)的最大值


import java.io.BufferedInputStream;
import java.util.Scanner;

public class _171_3_AC {
	public static void main(String[] args) {
		int num,rows,l;
		Scanner scan = new Scanner(new BufferedInputStream(System.in));
		rows = scan.nextInt();
		l = scan.nextInt();
		int[][] data = new int[rows][l];
		for(int i = 0; i < rows; ++i){
			for(int j = 0; j < l ; ++j){
				num = scan.nextInt();
				if(i - 1 < 0){
					if(j - 1 < 0){
						data[i][j] = num;
					}else{
						data[i][j] = data[i][j-1] + num;
					}
				}else{
					if(j - 1 < 0){
						data[i][j] = data[i - 1][j] + num;
					}else{
						if(data[i-1][j] > data[i][j-1]){
							data[i][j] = data[i-1][j]  + num;
						}else{
							data[i][j] = data[i][j-1]  + num;
						}
					}
				}
			}
		}
		System.out.println(data[rows-1][l-1]);
	}
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章