- 晴天小猪历险记之Hill
- 2016-07-05 21:14:58 @
样例还是觉得有问题。。
是从左下角出发啊。。。不是说可以走右上方吗。。
5
1
2 3
4 5 6
10 1 7 8
1 1 4 5 6
这样看起来底层第二个1的右上方是第4层的1,但是如果数字对齐就不是这样的了。。。
5
1
2 3
4 5 6
10 1 7 8
1 1 4 5 6
正如上图。。。左下角1到第四层1->4->2->1还是9啊。。
1 条评论
-
神的崛起 LV 10 @ 2016-07-05 21:19:26
何况我也发现很多code都没有打右上的情况。。比如:
var f,a:array[0..1001,0..1001] of longint;
i,j,n:longint;
flag:boolean;
procedure compare(x,y:longint);
begin
if f[x,y]+a[i,j]<f[i,j] then
begin
flag:=false;
f[i,j]:=f[x,y]+a[i,j];
end;
end;
begin
readln(n);
for i:=1 to n do
begin
for j:=1 to i do read(a[i,j]);
readln;
end;
fillchar(f,sizeof(f),60);
f[1,1]:=a[1,1];
for i:=2 to n do
repeat
flag:=true;
f[i,0]:=f[i,i];
f[i,i+1]:=f[i,1];
for j:=1 to i do
begin
compare(i-1,j-1); //左上
compare(i-1,j); //正上方
compare(i,j-1); //左
compare(i,j+1); //右,就是没有右上。。如果有右上就应该在加上compare(i-1,j+1);然而加上了却只A了两个点。。
compare(i-1,j+1);
end;
until flag;
writeln(f[n,1]);
end.
- 1