#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <algorithm>
#include <cstring>
#include <queue>
using namespace std; const int maxn = ;
const long long INF = ; //用来取余
int maze[maxn][maxn]; int d[][][][]; //行,列,k个数,value
int n, m, k; //[n,m], k件宝贝
long long ans; //方案数 int dfs(int r, int c, int sum, int Max); //当前位置
void input();
void solve(); void input()
{
memset(d, -, sizeof(d));
scanf("%d%d%d", &n, &m, &k);
for (int i = ; i < n; i++)
{
for (int j = ; j < m; j++) {
scanf("%d", &maze[i][j]);
}
}
} int dfs(int r, int c, int sum, int Max)
{
if (d[r][c][sum][Max + ] != -) { //已经遍历完, 并设置了结果
return d[r][c][sum][Max + ]; //返回结果
} int t = ; if (r == n - && c == m - ) { //到达入口 if (maze[r][c] > Max) { //可以再拿一个宝物
if (sum == k || sum == k - ) //如果已经到了 k 或是 k-1,方案++
t++;
}
else if (sum == k) { //不能拿时候,则此时就需要为k, 方案++
t++;
}
return d[r][c][sum][Max + ] = t; //更新方案数
} if (r + < n) {
if (maze[r][c] > Max) { //可以拿
t += dfs(r + , c, sum + , maze[r][c]); //选择拿
t %= INF;
t += dfs(r + , c, sum, Max); //选择不拿
t %= INF;
}
else {
t += dfs(r + , c, sum, Max); //不可以拿
t %= INF;
}
}
if (c + < m) {
if (maze[r][c] > Max) {
t += dfs(r, c + , sum + , maze[r][c]);
t %= INF;
t += dfs(r, c + , sum, Max);
t %= INF;
}
else {
t += dfs(r, c + , sum, Max);
t %= INF;
}
}
d[r][c][sum][Max + ] = t; //将方案数 保存在Max + 1 处
return d[r][c][sum][Max + ]; //返回方案数
} void solve()
{
input();
ans = dfs(, , , -);
cout << ans << endl;
} int main()
{
solve();
return ;
}

//不太熟悉动态规划的题目.................,参考了网上解法,回头看看这类题目.......

蓝桥杯 地宫寻宝 DFS 动态规划的更多相关文章

  1. 蓝桥杯 地宫寻宝 带缓存的DFS

      历届试题 地宫取宝   时间限制:1.0s   内存限制:256.0MB      问题描写叙述 X 国王有一个地宫宝库. 是 n x m 个格子的矩阵. 每一个格子放一件宝贝. 每一个宝贝贴着价 ...

  2. 蓝桥杯---剪格子(DFS&BFS)(小总结)

    问题描述 如下图所示,3 x 3 的格子中填写了一些整数. +--*--+--+ |10* 1|52| +--****--+ |20|30* 1| *******--+ | 1| 2| 3| +--+ ...

  3. 蓝桥杯---地宫取宝(记忆搜索=搜索+dp)

    题目网址:http://lx.lanqiao.org/problem.page?gpid=T120 问题描述 X 国王有一个地宫宝库.是 n x m 个格子的矩阵.每个格子放一件宝贝.每个宝贝贴着价值 ...

  4. 蓝桥杯 倍数问题(dfs,枚举组合数)

    标题:倍数问题 [题目描述]众所周知,小葱同学擅长计算,尤其擅长计算一个数是否是另外一个数的倍数.但小葱只擅长两个数的情况,当有很多个数之后就会比较苦恼.现在小葱给了你 n 个数,希望你从这 n 个数 ...

  5. 2018蓝桥杯 全球变暖(dfs)

    你有一张某海域NxN像素的照片,"."表示海洋."#"表示陆地,如下所示:........##.....##........##...####....###.. ...

  6. 蓝桥杯 剪邮票 DFS (不错的题目)

    剪邮票 如[图1.jpg], 有12张连在一起的12生肖的邮票.现在你要从中剪下5张来,要求必须是连着的.(仅仅连接一个角不算相连)比如,[图2.jpg],[图3.jpg]中,粉红色所示部分就是合格的 ...

  7. 蓝桥杯 正则问题(dfs)

    1607: 正则问题 时间限制: 1 Sec  内存限制: 256 MB提交: 34  解决: 13[提交][状态][讨论版] 题目描述 考虑一种简单的正则表达式:只由 x ( ) | 组成的正则表达 ...

  8. 蓝桥杯 - 带分数 (DFS)

      历届试题 带分数   时间限制:1.0s   内存限制:256.0MB        问题描写叙述 100 能够表示为带分数的形式:100 = 3 + 69258 / 714. 还能够表示为:10 ...

  9. 蓝桥杯-铺瓷砖(dfs)

    问题描述 有一长度为N(1< =N< =10)的地板,给定两种不同瓷砖:一种长度为1,另一种长度为2,数目不限.要将这个长度为N的地板铺满,一共有多少种不同的铺法? 例如,长度为4的地面一 ...

随机推荐

  1. 模拟alert,confirm 阻塞状态

    /*** * 模拟alert弹窗 * content 为弹框显示的内容 * 确定按钮对应的下面取消关闭显示框 * **/function oAlert(content) { var oWrap = $ ...

  2. Alpha阶段敏捷冲刺⑧

    1.提供当天站立式会议照片一张. 每个人的工作 (有work item 的ID),并将其记录在码云项目管理中: 昨天已完成的工作. 报表能和账单数据结合起来 工作中遇到的困难. 后端和程序的交互还是没 ...

  3. Delphi控件-复合控件【转】

    复合控件复合控件是Delphi控件中非常重要的一种控件,复合控件就是将两个或两个以上的控件重新组合成一个新的控件.例如TspinEdit.TlabeledEdit.TDBNavigator等就是复合控 ...

  4. maven编译,控制台中文乱码解决方案

    如下图,在使用maven运行后,在控制台看到中文展示乱码 出现这个的原因是源码使用UTF-8,但是maven编译的时候使用GBK标准,如下图   为了让maven编译的时候使用UTF-8标准,使用在p ...

  5. Linux_Apache 安装

    1.下载依赖扩展 apr.apr-util.pcre(正则依赖) https://apr.apache.org/download.cgi#aprutil1 apr:http://mirrors.shu ...

  6. linux使用密文生成os账户

    1.生成账户 [hufangrui@xxx ~]$ openssl passwd -1Password: Verifying - Password: $1$szzkROBZ$GYxffRLp8K5vW ...

  7. 安装pycharm软件后,打开robot framework怎么默认用pycharm打开

    1.打开ride.py的属性,修改打开方式

  8. es各类SearchType的意思

    元素 含义 QUERY_THEN_FETCH 查询是针对所有的块执行的,但返回的是足够的信息,而不是文档内容(Document).结果会被排序和分级,基于此,只有相关的块的文档对象会被返回.由于被取到 ...

  9. MT【141】逆用特征根法

    (清华大学THUSSAT) 已知 \(a=\left( \dfrac{-1+\sqrt{5}}{2} \right)^{-10}+\left( \dfrac{-1-\sqrt{5}}{2} \righ ...

  10. MySql数据库迁移图文展示

    MySql数据库的数据从一台服务器迁移到另外一台服务器需要将数据库导出,再从另外一台服务器导入.方法有很多,MySql配套的相关工具都有这个功能.phpMyAdmin就可以做,但是这个加载起来慢,推荐 ...