题目描述

猛兽侠中精灵鼠在利剑飞船的追逐下逃到一个n*n的建筑群中,精灵鼠从(0,0)的位置进入建筑群,建筑群的出口位置为(n-1,n-1),建筑群的每个位置都有阻碍,每个位置上都会相当于给了精灵鼠一个固定值减速,因为精灵鼠正在逃命所以不能回头只能向前或者向下逃跑,现在问精灵鼠最少在减速多少的情况下逃出迷宫?

输入描述:

第一行迷宫的大小: n >=2 & n <= 10000;
第2到n+1行,每行输入为以','分割的该位置的减速,减速f >=1 & f < 10。

输出描述:

精灵鼠从入口到出口的最少减少速度?
示例1

输入

3
5,5,7
6,7,8
2,2,4

输出

19

动态规划,初始化问题。

#include<iostream>
#include<vector>
using namespace std;

int main(){
    int n;
    scanf("%d",&n);
    int map[n][n];
    int dp[n][n];
    for( int i = 0 ; i < n ; i ++ ){
        for( int j = 0 ; j < n-1 ; j ++ )
            scanf("%d,",&map[i][j]);
        scanf("%d",&map[i][n-1]);
    }
    dp[0][0]=map[0][0];
    for( int i = 1 ; i < n ; i ++ )
        dp[i][0] = map[i][0] + dp[i-1][0];
    for( int j = 1 ; j < n ; j ++ )
        dp[0][j] = dp[0][j-1] + map[0][j];
    for( int i = 1 ; i < n ; i ++ )
        for( int j = 1 ; j < n ; j ++ )
            dp[i][j] = min(dp[i-1][j],dp[i][j-1]) + map[i][j];
    cout << dp[n-1][n-1] << endl;
    return 0;
}

 

 


0 条评论

发表评论

Avatar placeholder