http://soj.me/show_problem.php?pid=1563
明显的水题,几分钟敲出来;
测试下样例,居然发现答案不一样。。
鉴于上次乌龟棋数组开太小,数据是long的,虽然目测这题数据还行,还是改成long了。。int 我估计也行。。
目测纠结一番,不知道哪里错了。
输出每次 cur[][] 的变化,更加郁闷,有最大值32啊,为什么我输出26呢。。
输出答案,更加郁闷;
我就不信是人品技术问题。。
再瞄~~
26是最后一行的。。。
WA!!我倒,要输出 ans 的,居然打成cur[][];
AC了。。。
大清早的拿道题清醒下。居然发生这种事情,T~T...。
06.
#include<iostream>
07.
#include<cstring>
08.
using
namespace
std;
09.
long
a[1001][1001],cur[502][502];
10.
11.
long
max(
long
a,
long
b,
long
c)
12.
{
13.
long
t = a>b?a:b;
14.
return
t>c?t:c;
15.
}
16.
int
main()
17.
{
18.
int
col,row;
19.
cin>>row>>col;
20.
for
(
int
i = 1 ; i <= row; i++)
21.
for
(
int
j = 1 ; j <= col ; j++)
22.
cin>>a[i][j];
23.
24.
memset
(cur,0,
sizeof
(
int
));
25.
for
(
int
i=1;i<=col;i++)
26.
cur[1][i] = a[1][i];
27.
28.
for
(
int
i=1;i<=row;i++)
29.
{
30.
for
(
int
j=1;j<=col;j++)
31.
cur[i][j]=max(cur[i-1][j],cur[i-1][j-1],cur[i-1][j+1] )+a[i][j];
32.
// cout << i << " i j" <<j<<" "<<cur[i][j]<<endl;
33.
}
34.
35.
long
ans = 0 ;
36.
for
(
int
i=1;i<=col;i++)
37.
{
if
(cur[row][i]>ans)
38.
ans = cur[row][i];
// cout <<"@"<< ans<<endl;
39.
}
40.
cout <<ans<<endl;
41.
return
0;
42.
}