频道栏目
首页 > 程序开发 > 软件开发 > C++ > 正文
Codeforces Round #220 (Div. 2)C题:Inna and Dima(记忆化搜索+DP)
2014-10-30 10:51:21           
收藏   我要投稿

 

用dp[i][j]代表第i行第j列的数可以走的最大距离。为-1时表示未走过,将走过但未走完的暂时标记为INF。这样假如有环的时候就返回INF了。然后用dfs搜。

代码如下:

 

#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include
#include 
#include 

using namespace std;
#define LL __int64
const int INF=0x3f3f3f3f;
char mp[1001][1001], str[]=DIMA;
int dp[1001][1001];
int jx[]={0,0,1,-1};
int jy[]={1,-1,0,0};
int n, m;
int dfs(int x, int y, int tmp)
{
    if(dp[x][y]!=-1) return dp[x][y];
    dp[x][y]=INF;
    int i, a, b, t=0;
    tmp=(1+tmp)%4;
    for(i=0;i<4;i++)
    {
        a=x+jx[i];
        b=y+jy[i];
        if(a>=0&&a=0&&b=INF)
    {
        puts(Poor Inna!);
    }
    else
        printf(%d
,max1/4);
    return 0;
}


 

点击复制链接 与好友分享!回本站首页
相关TAG标签 记忆
上一篇:HDU 1059 Dividing(多重背包)
下一篇:Cocos2d-x3.3RC0通过JNI实现Java与C++互调
相关文章
图文推荐
点击排行

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站