hdu_1078 dp搜索

来源:互联网 发布:nginx 只允许本机访问 编辑:程序博客网 时间:2024/06/06 04:00

好晚了。。睡了睡觉

#include<iostream>#include<cstdio>using namespace std;int way[4][2]={{0,-1},{0,1},{-1,0},{1,0}};int N,K;      const int maxn=7;int dp[1<<maxn][1<<maxn];int map[1<<maxn][1<<maxn];inline void init(){    memset(dp,0,sizeof(dp));    return ;}        inline bool can(int x,int y){    if(x>=1 && x<=N && y>=1 && y<=N)    {        return true;    }    else    {        return false;    }}  int dfs(int x,int y){    if(dp[x][y])    {        return dp[x][y];    }    else    {        int nx,ny,temp;        int tmax=0;        for(int i=0;i<4;i++)        {            for(int j=1;j<=K;j++)               {                nx=x+way[i][0]*j;                ny=y+way[i][1]*j;                 if( can(nx,ny) && map[nx][ny] > map[x][y] )                {                    temp=dfs(nx,ny);                    if(temp > tmax)                    {                        tmax=temp;                    }                    }                        }           }         dp[x][y]=tmax+map[x][y];        return dp[x][y];    }}int main(){    while(scanf("%d%d",&N,&K))            {                       if(!(N+1)) break;        for(int i=1;i<=N;i++)        {            for(int j=1;j<=N;j++)            {                scanf("%d",&map[i][j]);            }        }            init();        printf("%d\n",dfs(1,1));    }    return 0;}


原创粉丝点击