给定一个正数的平方,自然数写一个程序,找到一条水平和垂直路径,沿着它们的数字总和最大。甲水平路径从第一列到最后去,并具有通过一个在每个步骤中,以增加其列位置。甲垂直路径从第一行进行到最后的,并具有由一个在每个步骤中,以增加其行位置。此外,水平路径中的行位置可以保持相同或沿任一方向改变一个,对于垂直路径也是如此。
为了说明这一点,以下可能是有效的路径:
以下路径将无效,因为它会向后退(并在某些地方保留在同一行):
以下路径同样无效,因为它一步一步将行位置更改了多个:
注意:解决方案应在可接受的时间内运行。
输入值
在标准输入上给出n行输入,每行输入n个以空格分隔的正整数。2≤ Ñ ≤40的每一行是由一个换行符终止。数字足够小,以至于最大和适合32位有符号整数。
输出量
水平和垂直路径的最大和(按此顺序),以单个空格分隔。
样品输入1
1 2
1 2
样品输出1
3 4
样品输入2
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 3 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
2 1 4 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 4 1 3 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 4 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 5 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
样品输出2
37 35
样品输入3
683 671 420 311 800 936
815 816 123 142 19 831
715 588 622 491 95 166
885 126 262 900 393 898
701 618 956 865 199 537
226 116 313 822 661 214
样品输出3
4650 4799
为方便起见,我们在bash(感谢Ventero)和PowerShell中准备了一些测试用例,您可以通过它们运行程序。调用是:<test> <command line>
,所以类似./test python paths.py
或./test.ps1 paths.exe
。玩得开心 :-)
bash
测试脚本+10 !我希望所有代码高尔夫都附带这样的东西。