• HDU1078 FatMouse and Cheese(记忆化搜索)


    题意:
    老鼠每次只能走k步停下来,停下的这个位置只能比上一个停留的位置大,并获取其价值,每次只能水平或垂直走(十字),问最大能得到的价值
    #include <iostream>
    #include <algorithm>
    #include <cstring>
    #include <cmath>
    #include <queue>
    #include <stack>
    #include <map>
    #include <set>
    #include <vector>
    #include <cstdio>
    using namespace std;
    int dp[110][110],a[110][110],n,k;
    int fx[]={-1,0,0,1},fy[]={0,-1,1,0};
    int dfs(int x,int y)
    {
        if(!dp[x][y])
        {
            int ans=0;
            for(int i=1;i<=k;i++)
            {
                for(int j=0;j<4;j++)
                {
                    int xx=x+i*fx[j],yy=y+i*fy[j];
                    if(xx<0||xx>=n||yy<0||yy>=n) continue;
                    if(a[xx][yy]>a[x][y]) ans=max(ans,dfs(xx,yy));
                }
            }
            dp[x][y]=ans+a[x][y];
        }
        return dp[x][y];
    }
    int main()
    {
        //freopen("in.txt","r",stdin);
        while(~scanf("%d%d",&n,&k)&&n!=-1)
        {
            memset(dp,0,sizeof(dp));
            for(int i=0;i<n;i++)
                for(int j=0;j<n;j++)
                    scanf("%d",&a[i][j]);
            printf("%d
    ",dfs(0,0));
        }
        return 0;
    }
  • 相关阅读:
    [LUOGU] NOIP提高组模拟赛Day1
    关于NX Check_Mate功能外部开发心得
    hibernate增删改
    eval转json
    day24(JAVAWEB上传与下载)
    struts2执行流程
    oracle之简单总结
    设计模式之装饰者模式
    第五周学习总结
    第四周学习总结
  • 原文地址:https://www.cnblogs.com/d-e-v-i-l/p/5286870.html
Copyright © 2020-2023  润新知