小乐乐想出门HLG

来源:互联网 发布:c语言闰年代码 编辑:程序博客网 时间:2024/05/01 08:22


小乐乐想出门

Time Limit: 1000 MS

Memory Limit: 32768 K

 

Total Submit: 147(108 users)

Total Accepted: 119(105 users)

Rating: 

Special Judge: No

 

Description

大家可能不知道,小乐乐的家好大好大,可是好乱好乱。下面那个矩阵就是她家的简化图,每一个格子表示一个房间,格子里的数字表示穿过这个房间需要的力气。小乐乐的卧室在左上角,而大门却在右下角。所以小乐乐得穿过一些房间才能出门。小乐乐有个习惯,她只会向下走或者向右走。小乐乐很懒,她想知道以最省力的方式出门需要花费多少力气?

Input

第一行输入一个整数n(1<n<1000) 
随后n行,每行n个整数。表示小乐乐的家
其中,左上角和右下角保证为0.

Output

输出最小力气的值。

Sample Input

3
0 3 7
6 2 1
9 8 0
8
0 3253 3165 9415 3108 7744 8869 1768
347 6410 8 5465 9733 1529 2584 9148
552 8569 2569 288 7211 5335 6652 2144
8203 683 8868 7178 8045 3430 9283 6498
2196 5533 2772 2376 7221 1861 5743 647
217 2159 9000 5584 7908 3861 1064 7431
7444 6086 3073 9035 6379 3198 12 3916
7248 7482 7286 6824 9747 539 6282 0

Sample Output

6
35973

#include<stdio.h>

#include<string.h>

int min(int x,int y)

{

    return x>y?y:x;

}

int cost[1010][1010],dp[1010][1010];

int main()

{

    int n,i,j;

    while(~scanf("%d",&n))

    {

        memset(dp,0,sizeof(dp));

        for(i=0;i<n;i++)

        for(j=0;j<n;j++)

        {

            scanf("%d",&cost[i][j]);

        }

        dp[0][0]=cost[0][0];

                for(i=1;i<n;i++)

        {

            dp[0][i]=cost[0][i]+dp[0][i-1];

            dp[i][0]=cost[i][0]+dp[i-1][0];

        }

        for(i=1;i<n;i++)

        for(j=1;j<n;j++)

        {

            dp[i][j]=cost[i][j]+min(dp[i-1][j],dp[i][j-1]);

        }

        printf("%d\n",dp[n-1][n-1]);

 

    }

}

0 0
原创粉丝点击