程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> paacal-dp 滑雪 請幫我看看我的代碼哪裡錯了 特別是search過程 謝謝!

paacal-dp 滑雪 請幫我看看我的代碼哪裡錯了 特別是search過程 謝謝!

編輯:編程綜合問答
dp 滑雪 請幫我看看我的代碼哪裡錯了 特別是search過程 謝謝!

滑雪是一項非常刺激的運動,為了獲得速度,滑雪的區域必須向下傾斜,而且當你滑到坡底,你不得不再次走上坡或者等待升降機來載你。給出一個由二維數組表示的滑雪區域,數組的數字代表各點的高度。請你找出這個區域中最長的滑坡。
下面是一個例子:
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更長。事實上,這是最長的一條滑坡。

輸入文件ski.in的第一行為兩個數R, C,表示滑雪區域的行數和列數(1≤R,C≤100)。下面是R行,每行有C個整數,表示高度H(0≤H≤10000)。

輸出文件ski.out包括一行,只包含一個整數,表示滑雪區域中最長滑坡的長度

這是我的代碼 請問哪裡錯了 不能得滿分啊
program hx;
type info=array[1..3]of longint;
const movx:array[1..4]of shortint=(0,-1,1,0);
movy:array[1..4]of shortint=(1,0,0,-1);
var map:array [1..6000000]of info;
n,m,s,i,tot,max:longint;
procedure readin;
var i,j:longint;
begin
readln(n,m);
for i:=1 to n do
begin
for j:=1 to m do
begin
inc(s);
read(map[s][3]);
map[s][1]:=i;
map[s][2]:=j;
end;
end;
end;
procedure ordered(l,r:longint);
var i,j,m:longint;
jhq:info;
begin
m:=map[(l+r)div 2][3];
i:=l;
j:=r;
while i<=j do
begin
while map[i][3] while map[j][3]>m do dec(j);
if i<=j then
begin
jhq:=map[i];
map[i]:=map[j];
map[j]:=jhq;
inc(i);
dec(j);
end;
if i if j>l then ordered(l,j);
end;
end;
procedure search(k:longint);
var i:longint;
f:boolean;
begin
f:=false;
for i:=1 to 4 do
begin
if (map[k-1][1]=map[k][1]+movx[i])and(map[k-1][2]=map[k][2]+movy[i])and(map[k][3]<>map[k-1][3]) then
f:=true;
if f=true then inc(tot);
if f=false then
begin
if max<=tot then max:=tot
else tot:=0;
end;
if k-1=1 then exit;
search(k-1);
end;
end;
begin
s:=0;
readin;
ordered(1,s);
max:=0;
search(s);
write(max+1);
end.

最佳回答:


不一定從最高處開始啊

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved