HDOJ 1078 FatMouse and Cheese 记忆化搜索模板

来源:互联网 发布:淘宝上的宝贝怎么上架 编辑:程序博客网 时间:2024/06/07 04:48

记忆花搜索和普通搜索的区别
前者dp思想从终点推到起点也就是祖宗的最优值从他的子孙中的最优值选取
后者枚举从起点到终点刷新一遍

#include<cstdio>#include<cstring>#include<algorithm>using namespace std;int dp[200][200],mp[200][200],n,k,bu[4][2] = {0,1,0,-1,1,0,-1,0};bool can(int x,int y){    if(x>=0&&x<n&&y>=0&&y<n)return true;    else return false;}int dfs(int x,int y){    if(dp[x][y])return dp[x][y];    int count = 0;  for(int j=0;j<4;j++)    for(int i=1;i<=k;i++)       {          int X = x+bu[j][0]*i,Y = y+bu[j][1]*i;          if(!can(X,Y))break;          if(mp[X][Y]>mp[x][y])          {            count = max(count,dfs(X,Y));              }       }    return dp[x][y] = mp[x][y]+count;}int main(){   while(scanf("%d%d",&n,&k)!=EOF)    {      if(n==-1&&k==-1)break;      memset(dp,0,sizeof(dp));      for(int i=0;i<n;i++)       for(int j=0;j<n;j++)         scanf("%d",&mp[i][j]);      printf("%d\n",dfs(0,0));    }    return 0;} 
0 0
原创粉丝点击