首页 > 其他 > 详细

POJ 2948 Martian Mining(DP)

时间:2014-07-22 22:52:42      阅读:316      评论:0      收藏:0      [点我收藏+]

题目链接

题意 : n×m的矩阵,每个格子中有两种矿石,第一种矿石的的收集站在最北,第二种矿石的收集站在最西,需要在格子上安装南向北的或东向西的传送带,但是每个格子中只能装一种传送带,求最多能采多少矿。

思路 :记忆化搜索。也可以用递推

bubuko.com,布布扣
//2948
#include <stdio.h>
#include <string.h>
#include <iostream>

using namespace std ;

int yeye[510][510] ,blog[510][510] ;
int dp[510][510] ;

int DP(int row,int col)
{
    if(row < 0 || col < 0) return 0 ;
    else if(dp[row][col] != -1) return dp[row][col] ;
    else return dp[row][col] = max(DP(row-1,col)+yeye[row][col],DP(row,col-1)+blog[row][col]) ;
}
int main()
{
    int n, m ;
    while(~scanf("%d %d",&n,&m))
    {
        if(n == 0 && m == 0) break ;
        for(int i = 0 ; i < n ; i++)
            for(int j = 0 ; j < m ;j++)
                scanf("%d",&yeye[i][j]) ;
        for(int i = 0 ; i < n ; i++)
            for(int j = 0 ; j < m ;j++)
                scanf("%d",&blog[i][j]) ;
        memset(dp,-1,sizeof(dp)) ;
        for(int i = 0 ; i < n ; i++)
            for(int j = 1 ; j < m ; j++)
            yeye[i][j] += yeye[i][j-1] ;
        for(int i = 0 ; i < m ; i++)
            for(int j = 1 ; j < n ; j++)
            blog[j][i] += blog[j-1][i] ;
        printf("%d\n",DP(n,m)) ;
    }
    return 0 ;
}
View Code

POJ 2948 Martian Mining(DP),布布扣,bubuko.com

POJ 2948 Martian Mining(DP)

原文:http://www.cnblogs.com/luyingfeng/p/3861164.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!