动态规划 之 dp + 图搜索

/*
// 典型的动态规划,用递归下的记忆化搜索来实现,得用递归,因为你根本不知道从哪里开始,即cnt[0][0]不知道是多少
// 状态转移方程 合法的情况下:DP(i,j) = max( DP(i,j-1), DP(i,j+1), DP(i-1,j), DP(i+1,j) ) + 1;
#include 
using namespace std;
const int m_size = 105;
int cnt[m_size][m_size],matrix[m_size][m_size];
int dir[4][2] = {{0,1},{0,-1},{1,0},{-1,0}};
int row,col;
bool ok(const int &x,const int &y)
{
    return (x>=0&&x=0&&y0)
        return cnt[x][y];
    for(i=0;i<4;i++)
    {
        dx = x + dir[i][0];
        dy = y + dir[i][1];
        if(ok(dx,dy) &&matrix[x][y]>matrix[dx][dy] )
        {
            if(max>row)
    {
        cin >> col;
        for(i=0;i> matrix[i][j];
                cnt[i][j] = 0;
            }
        for(i=0;i

这是滑雪球问题,dp + 类似图的搜索,动态规划关键在于根据题意定义dp的含义 和 写出状态转移方程。

你可能感兴趣的:(c/c++成长之路)