1011


 背景 Background
    順治帝福臨,是清朝入關後的第一位皇帝。他是皇太極的第九子,生於崇德三年(1638)崇德八年八月二ten+six日在瀋陽即位,改元順治,在位18年。卒於順治十八年(1661),終24歲。 
   順治即位後,由叔父多爾袞輔政。順治七年,多爾袞出塞射獵,死於塞外。14歲的福臨提前親政。順治帝天資聰穎,讀書勤奮,他吸收先進的漢文化,審時度勢,對成法祖制有所更張,且不顧滿洲親貴大臣的反對,倚重漢官。爲了使新興的統治基業長治久安,他以明之興亡爲借鑑,警惕宦官朋黨爲禍,重視整飭吏治,注意與民休息,取之有節。但他少年氣盛,剛愎自用,急噪易怒,當他寵愛的董妃去世後,轉而消極厭世,終於匆匆走完短暫的人生歷程,英年早逝。他是清朝歷史上唯一公開歸依禪門的皇帝。 
 描述 Description
    順治喜歡滑雪,這並不奇怪, 因爲滑雪的確很刺激。可是爲了獲得速度,滑的區域必須向下傾斜,而且當你滑到坡底,你不得不再次走上坡或者等待太監們來載你。順治想知道載一個區域中最長的滑坡。 
   區域由一個二維數組給出。數組的每個數字代表點的高度。下面是一個例子: 
 
 
    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 
 
   順治可以從某個點滑向上下左右相鄰四個點之一,當且僅當高度減小。在上面的例子中,一條可滑行的滑坡爲24-17-16-1。當然25-24-23-...-3-2-1更長。事實上,這是最長的一條。 
 輸入格式 Input Format
    輸入的第一行表示區域的行數R和列數C(1 <= R,C <= 500)。下面是R行,每行有C個整數,代表高度h,0<=h<=10000。 
 輸出格式 Output Format

    輸出最長區域的長度。

解析:本題目就是對記憶搜索的很好應用,跟word中的代碼很像。

//============================================================================
 // Name        : Vijos1011.c
 // Author      : Gecko
 // Version     : 1.0
 // Copyright   : Your copyright notice
 // Description : 記憶搜索
 //============================================================================
 
 #include <stdio.h>
 
 const int move[4][2] = {{1,0},{-1,0},{0,1},{0,-1}};
 int r,c;
 int h[505][505];
 int mem[505][505];
 
 int dp(int x,int y)
 {
 	int max,x2,y2,i;
 	if(x<0 || y<0 || x>=r || y>=c)
 		return 0;
 	if(mem[x][y]>0)
 		return mem[x][y];
 	max = 0;
 	for(i=0;i<4;i++)
 	{
 		x2 = x-move[i][0];
 		y2 = y-move[i][1];
 		if(h[x][y]>h[x2][y2])
 			if(dp(x2,y2)>max)
 				max = dp(x2,y2);
 	}
 	return mem[x][y] = max+1;
 }
 
 int main()
 {
 	int i,j,ans;
 	scanf("%d %d",&r,&c);
 	for (i = 0; i < r; i++)
 		for (j = 0; j < c; j++)
 			scanf("%d", &h[i][j]);
 	ans = 0;
 	for (i = 0; i < r; i++)
 		for (j = 0; j < c; j++)
 			if (dp(i, j) > ans)
 				ans = dp(i, j);
 	printf("%d\n", ans);
 	return 0;
 }


 
 

發佈了46 篇原創文章 · 獲贊 102 · 訪問量 47萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章