小乐乐想出门 | ||||||
| ||||||
Description | ||||||
大家可能不知道,小乐乐的家好大好大,可是好乱好乱。下面那个矩阵就是她家的简化图,每一个格子表示一个房间,格子里的数字表示穿过这个房间需要的力气。小乐乐的卧室在左上角,而大门却在右下角。所以小乐乐得穿过一些房间才能出门。小乐乐有个习惯,她只会向下走或者向右走。小乐乐很懒,她想知道以最省力的方式出门需要花费多少力气? | ||||||
Input | ||||||
第一行输入一个整数n(1<n<1000) | ||||||
Output | ||||||
输出最小力气的值。 | ||||||
Sample Input | ||||||
3 | ||||||
Sample Output | ||||||
6 |
#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]);
}
}