程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> Codeforces Round #220 (Div. 2)C題:Inna and Dima(記憶化搜索+DP)

Codeforces Round #220 (Div. 2)C題:Inna and Dima(記憶化搜索+DP)

編輯:C++入門知識

Codeforces Round #220 (Div. 2)C題:Inna and Dima(記憶化搜索+DP)


 

用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;
}


 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved