2812 惱人的青蛙(暴力搜索時根據問題優化判斷條件以加快搜索速度)
阿新 • • 發佈:2018-03-01
對象 sea 轉化 列數 函數 pla ecp 間隔 problem
題目鏈接:
http://bailian.openjudge.cn/practice/2812
題目:
- 描述
-
在韓國,有一種小的青蛙。每到晚上,這種青蛙會跳越稻田,從而踩踏稻子。農民在早上看到被踩踏的稻子,希望找到造成最大損害的那只青蛙經過的路徑。每只青蛙總是沿著一條直線跳越稻田,而且每次跳躍的距離都相同。
如下圖所示,稻田裏的稻子組成一個柵格,每棵稻子位於一個格點上。而青蛙總是從稻田的一側跳進稻田,然後沿著某條直線穿越稻田,從另一側跳出去
如下圖所示,可能會有多只青蛙從稻田穿越。青蛙的每一跳都恰好踩在一棵水稻上,將這棵水稻拍倒。有些水稻可能被多只青蛙踩踏。當然,農民所見到的是圖4中的情形,並看不到圖3中的直線,也見不到別人家田裏被踩踏的水稻,。
①不是一條行走路徑:只有兩棵被踩踏的水稻;
②是一條行走路徑,但不包括(2,6)上的水道;
③不是一條行走路徑:雖然有3棵被踩踏的水稻,但這三棵水稻之間的距離間隔不相等。
請你寫一個程序,確定:在一條青蛙行走路徑中,最多有多少顆水稻被踩踏。例如,圖4的答案是7,因為第6行上全部水稻恰好構成一條青蛙行走路徑。 - 輸入
- 從標準輸入設備上讀入數據。第一行上兩個整數R、C,分別表示稻田中水稻的行數和列數,1≤R、C≤5000。第二行是一個整數N,表示被踩踏的水稻數量, 3≤N≤5000。在剩下的N行中,每行有兩個整數,分別是一顆被踩踏水稻的行號(1~R)和列號(1~C),兩個整數用一個空格隔開。而且,每棵被踩踏水稻只被列出一次。
- 輸出
- 從標準輸出設備上輸出一個整數。如果在稻田中存在青蛙行走路徑,則輸出包含最多水稻的青蛙行走路徑中的水稻數量,否則輸出0。
- 樣例輸入
-
6 7 14 2 1 6 6 4 2 2 5 2 6 2 7 3 4 6 1 6 2 2 3 6 3 6 4 6 5 6 7
- 樣例輸出
-
7
1 /* 2 問題 給出稻田的行數、列數、稻子的顆數以及每顆稻子在稻田中的位置,計算並輸出能夠構成直線的路徑上等長的稻子數最多有多少 3 起步三顆以上,如果沒有則輸出0 4 解題思路 很明顯,用5000乘以5000的稻田存儲數據是不現實的,故將點存儲進入結構體數組中,枚舉不同且不重復的兩個點 5
2812 惱人的青蛙(暴力搜索時根據問題優化判斷條件以加快搜索速度)