vijos p1011清帝之惑之顺治 我的程序错在哪里?

来源:百度知道 编辑:UC知道 时间:2024/05/13 17:53:59
program p1011;
const
x:array[1..4]of integer=(1,-1,0,0);
y:array[1..4]of integer=(0,0,1,-1);
var
a:array[0..501,0..501] of longint;
len:array[0..501,0..501] of longint;
i,j,r,c,maxh:longint;
function sum(i,j:integer):longint;
var
k,max:integer;
begin
max:=1;
if len[i,j]<>0 then sum:=len[i,j]
else
begin
for k:=1 to 4 do
if (a[i+x[k]][j+y[k]]<a[i,j]) and ((i+x[k])>0) and ((i+x[k])<=c) and
((j+y[k])>0) and ((j+y[k])<=r) then
if max<sum(i+x[k],j+y[k])+1
then max:=sum(i+x[k],j+y[k])+1;
sum:=max;
end;
end;
begin
read(r,c);
for i:=1 to r do
for j:=1 to c do
begin
read(a[i,j]);
len[i,j]:=0;
end;
for i:=1 to r do
for j:=1 to c do
len[i,j]:=sum(i,j);
for i:=1 to r do
for j:=1 to c do

看得我眼花了才看出来,很简单:
for k:=1 to 4 do
if (a[i+x[k]][j+y[k]]<a[i,j]) and ((i+x[k])>0) and ((i+x[k])<=c{!!!!应该是r}) and
((j+y[k])>0) and ((j+y[k])<=r{!!!!应该是c}) then
if max<sum(i+x[k],j+y[k])+1
then max:=sum(i+x[k],j+y[k])+1;
不就是rc搞反,我也经常这样呢~
我用小号过了
http://www.vijos.cn/Record_Show.asp?id=1135386