【♂Not The Triumph♂O(∩_∩)O哈哈~But The Struggle♂】

竞赛决不是捷径,它只是另一种艰辛的生活方式。得到与失去,只有时间会去评判;成功与失败,只有历史能去仲裁。我不会永远成功,正如我不会永远失败一样

  C++博客 :: 首页 :: 联系 ::  :: 管理
  6 Posts :: 239 Stories :: 25 Comments :: 0 Trackbacks

常用链接

留言簿(7)

我参与的团队

搜索

  •  

积分与排名

  • 积分 - 108444
  • 排名 - 229

最新评论

阅读排行榜

评论排行榜

问题描述
把儿站在一个N x N的方阵中最左上角的格子里。他可以从一个格子走到它右边和下边的格子里。每一个格子都有一个伤害值。他想在受伤害最小的情况下走到方阵的最右下角。

输入数据
第一行输入一个正整数n。
以下n行描述该矩阵。矩阵中的数保证是不超过1000的正整数。

输出数据
输出最小伤害值。

样例输入
3
1 3 3
2 2 2
3 1 2

样例输出
8

数据规模
n<=1000

【参考程序】:

var n,i,j:longint;
    a:array[
1..1000,1..1000]of longint;
begin
    
//while not eof do
    
//begin
        readln(n);
        
for i:=1 to n do
           
for j:=1 to n do
              read(a[i,j]);
        
for i:=2 to n do a[i,1]:=a[i,1]+a[i-1,1];
        
for i:=2 to n do a[1,i]:=a[1,i]+a[1,i-1];
        
for i:=2 to n do
          
for j:=2 to n do
             
if a[i-1,j]<a[i,j-1]then
               a[i,j]:
=a[i,j]+a[i-1,j]
             
else a[i,j]:=a[i,j]+a[i,j-1];
        writeln(a[n,n]);
    
//end;
end.


posted on 2009-03-29 08:57 开拓者 阅读(142) 评论(0)  编辑 收藏 引用 所属分类: 动态规划&背包

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理