问题描述
  X 国王有一个地宫宝库。是 n x m 个格子的矩阵。每个格子放一件宝贝。每个宝贝贴着价值标签。

地宫的入口在左上角,出口在右下角。

小明被带到地宫的入口,国王要求他只能向右或向下行走。

走过某个格子时,如果那个格子中的宝贝价值比小明手中任意宝贝价值都大,小明就可以拿起它(当然,也可以不拿)。

当小明走到出口时,如果他手中的宝贝恰好是k件,则这些宝贝就可以送给小明。

请你帮小明算一算,在给定的局面下,他有多少种不同的行动方案能获得这k件宝贝。
输入格式
  输入一行3个整数,用空格分开:n m k (1<=n,m<=50, 1<=k<=12)

接下来有 n 行数据,每行有 m 个整数 Ci (0<=Ci<=12)代表这个格子上的宝物的价值
输出格式
  要求输出一个整数,表示正好取k个宝贝的行动方案数。该数字可能很大,输出它对 1000000007 取模的结果。
样例输入
2 2 2
1 2
2 1
样例输出
2
样例输入
2 3 2
1 2 3
2 1 5
样例输出
14

#include <cstdio>
#include <cstring>
#include <string>
#include <algorithm>
#include <iostream>
using namespace std;
const int mod = 1000000007;
int n,m,k;
int mp[60][60];
int dp[60][60][100][13];
int dfs(int x,int y,int num,int v)
{if(dp[x][y][num][v]!=-1)return dp[x][y][num][v];if(x==n&&y==m){if(num==k||(num==k-1&&mp[x][y]>v))return dp[x][y][num][v]=1;return dp[x][y][num][v]=0;}int t=0;if(x>n||y>m||num>k) return dp[x][y][num][v]=0;for(int i=0;i<4;i++){if(i==0&&mp[x][y]>v)t=(t+dfs(x+1,y,num+1,mp[x][y]))%mod;if(i==1)t=(t+dfs(x+1,y,num,v))%mod;if(i==2&&mp[x][y]>v)t=(t+dfs(x,y+1,num+1,mp[x][y]))%mod;if(i==3)t=(t+dfs(x,y+1,num,v))%mod;}// cout<<t<<endl;//  if(y+1<m)// {//    if(c[x][y]>v)//  {//         t=(t+dfs(x,y+1,num+1,c[x][y]))%mod;//   }//     t=(t+dfs(x,y+1,num,v))%mod;// }// if(x+1<n)// {//    if(c[x][y]>v)//      t=(t+dfs(x+1,y,num+1,c[x][y]))%mod;//   t=(t+dfs(x+1,y,num,v))%mod;// }return dp[x][y][num][v]=t%mod;
}
int main()
{cin>>n>>m>>k;memset(dp,-1,sizeof(dp));for(int i=1;i<=n;i++)for(int j=1;j<=m;j++){cin>>mp[i][j];mp[i][j]++; //宝藏的值可能为0 不好比较 所以所有的均值加1,此法可以运用于此类情况}cout<<dfs(1,1,0,0)<<endl;return 0;
}

dp写法

#include <bits/stdc++.h>
using namespace std;
#define fi first
#define se second
#define ff(i,a,b) for(int i = a; i <= b; i++)
#define f(i,a,b) for(int i = a; i < b; i++)
typedef pair<int,int> P;
#define ll long long
ll dp[52][52][13][13],value[52][52];
const ll mod = 1000000007;
int main()
{ios::sync_with_stdio(false);int n,m ,k;cin >> n >> m >> k;ff(i,1,n) ff(j,1,m){cin >> value[i][j];value[i][j]++;}dp[1][1][0][0] = 1;dp[1][1][1][value[1][1]] = 1;ff(i,1,n) ff(j,1,m) ff(g,0,k) ff(h,0,13){dp[i][j][g][h] += (dp[i - 1][j][g][h] + dp[i][j - 1][g][h])%mod;if(g - 1 >= 0 && h < value[i][j]){dp[i][j][g][value[i][j]] += dp[i][j - 1][g - 1][h];dp[i][j][g][value[i][j]] += dp[i - 1][j][g - 1][h];}}ll ans = 0;ff(i,0,13) {ans += dp[n][m][k][i];ans %= mod;}cout << ans << endl;return 0;
}

蓝桥 迷宫寻宝 记忆化搜索相关推荐

  1. 01迷宫(记忆化搜索)

    01迷宫 题目描述: 有一个由01组成的n*n格迷宫,若你位于一格0上,那么你可以移动到相邻4格中的某一格1上,同样若你位于一格1上,那么你可以移动到相邻4格中的某一格0上.那么对于给定的迷宫,询问从 ...

  2. BZOJ 2246 [SDOI2011]迷宫探险 (记忆化搜索)

    题目大意:太长了,略 bzoj luogu 并没有想到三进制状压 题解: 3进制状压陷阱的状态,0表示这种陷阱的状态未知,1已知危险,2已知不危险 然后预处理出在当前状态下,每种陷阱有害的概率,设为$ ...

  3. 洛谷P1141 01迷宫【记忆化搜索】

    题目链接:P1141 01迷宫 程序说明: 可以用bfs来做,但是数据毒瘤,如果每次询问都运行一次bfs,会有三个TLE..可以将路途经过的点储存起来并且记录答案,如果询问的点已经被记录了答案,直接输 ...

  4. 蓝桥杯历届试题 地宫取宝 dp or 记忆化搜索

    问题描述 X 国王有一个地宫宝库.是 n x m 个格子的矩阵.每个格子放一件宝贝.每个宝贝贴着价值标签. 地宫的入口在左上角,出口在右下角. 小明被带到地宫的入口,国王要求他只能向右或向下行走. 走 ...

  5. 【蓝桥杯真题】地宫取宝(搜索-记忆化搜索详解)

    链接 [蓝桥杯][2014年第五届真题]地宫取宝 题目描述 X 国王有一个地宫宝库.是 n x m 个格子的矩阵.每个格子放一件宝贝.每个宝贝贴着价值标签. 地宫的入口在左上角,出口在右下角. 小明被 ...

  6. [蓝桥杯][算法提高VIP]夺宝奇兵-递推+记忆化搜索

    题目描述 在一座山上,有很多很多珠宝,它们散落在山底通往山顶的每条道路上,不同道路上的珠宝的数目也各不相同.下图为一张藏宝地图: 7 3 8 8 1 0 2 7 4 4 4 5 2 6 5 " ...

  7. DP\记忆化搜索-牛客寒假集训营3-牛牛的DRB迷宫I

    DP-牛客寒假集训营3-牛牛的DRB迷宫I 题目: 题意: 求迷宫问题的方案数量.与--求迷宫问题的方案数量.与--求迷宫问题的方案数量.与--DP题型总结中的<摘花生>类似.中的< ...

  8. 01迷宫(深搜寻找+记忆化搜索)

    01迷宫(深搜+记忆化搜索) 题目描述 有一个仅由数字0与1组成的n×n格迷宫.若你位于一格0上,那么你可以移动到相邻4格中的某一格1上,同样若你位于一格1上,那么你可以移动到相邻4格中的某一格0上. ...

  9. 【蓝桥杯】历届试题 地宫取宝(记忆化搜索、dfs、dp)

    历届试题 地宫取宝 问题描述 X 国王有一个地宫宝库.是 n x m 个格子的矩阵.每个格子放一件宝贝.每个宝贝贴着价值标签. 地宫的入口在左上角,出口在右下角. 小明被带到地宫的入口,国王要求他只能 ...

最新文章

  1. 多模态人物识别技术及其在爱奇艺视频场景中的应用 | 公开课笔记
  2. 科技|全球首款飞行汽车开始量产!下月开始预售,2023年后或可实现一键打“飞车”...
  3. [Java] 蓝桥杯ALGO-61 算法训练 奇偶判断
  4. Moreau Decomposition 和 共轭次梯度定理
  5. 计算机操作系统笔记(一)
  6. 阶段3 2.Spring_03.Spring的 IOC 和 DI_1 ioc的概念和作用
  7. 某公司基于FineBI数据决策平台的试运行分析报告
  8. 苹果手机录屏软件_手机游戏录屏软件哪个好用 好用手机游戏录屏软件介绍
  9. 基于C++的教师信息管理系统
  10. SAVIOR Securing Autonomous Vehicles with Robust Physical Invariants
  11. 【PHP】openssl_sign(): supplied key param cannot be coerced into a private key
  12. 字幕/打轴/压制小tip——Aegisub MeGUI 极简操作指南
  13. 用友数据库最新会计期间_用友U8数据库维护常用表
  14. 那些年面挂的js手写题
  15. Android Hook 实战--替换第三方sdk的类
  16. Pyhon中利用GM(1,1)和ARIMA模型对卫星DCB值进行预测
  17. 自我介绍及欢迎报考我的研究生
  18. DeepDive教程第一部分
  19. 重磅推荐:机器人行业深度报告
  20. 设计模式—策略模式的设计与使用

热门文章

  1. 教授专栏54 | 香港科大商学院绿色金融研究小组:借鉴外地经验,培育绿色金融人才...
  2. 中国软实力瞭望:十大知名调查研究咨询公司
  3. Docker常见问题处理
  4. I/O多路转换之select与select服务器
  5. 0120 - Kindle 导出标注时,如何破除 您已达到本内容的剪贴上限 这一限制?
  6. 【设计师必学】在SketchUp中Enscape的灯光照明技巧
  7. 硬盘结构受损—数据恢复
  8. 写给Java开发看的 Docker 干货(零基础部署Nginx MySQL SpringBoot)
  9. iMagic,开启属于您的魔灯时刻
  10. 郭大侠与线上游戏(set)