#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. mybatis连接数据库的几种方式

    1.可以通过配置文件 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="ht ...

  2. Teamwork(The eighth day of the team)

    在经过算是蛮艰辛的努力后吧,我们终于有了一点点成果.虽然还离理想中的蛮遥远的,但是我们相信,虽然我们走得很慢,但是我们一直都会坚持前进.

  3. Alpha版本冲刺(三)

    目录 组员情况 组员1(组长):胡绪佩 组员2:胡青元 组员3:庄卉 组员4:家灿 组员5:凯琳 组员6:丹丹 组员7:家伟 组员8:政演 组员9:鸿杰 组员10:刘一好 组员11:何宇恒 展示组内最 ...

  4. SqlHelper类的编写

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.D ...

  5. SQL语句中的output用法

    private void button2_Click(object sender, RoutedEventArgs e) { using (SqlConnection conn = new SqlCo ...

  6. 初识asp

    1.ASP(Active Server Pages 动态服务器页面)是一种生成动态交互性网页的强有力工具 <!DOCTYPE html> <html> <body> ...

  7. File FileStream StreamReader StreamWriter C#

    存在各种各样的IO设备,比如说文件File类(字符串文件和二进制文件),可以直接使用File类对文件进行读写操作. 这些各种IO的读取和写入是通过流的形式实现的,基类为Stream,针对各种不同的IO ...

  8. zabbix 自定义监控nginx

    zabbix自定义nginx监控项 查看nginx编译安装是否加上该选项,如果没有请重新编译安装 配置nginx.conf vim /usr/local/cpgroup/nginx/conf/vhos ...

  9. 关于PHP 时区错误的问题

    php的ini文件中时区配置默认为关闭状态 这会导致调用时间函数时出错,所以要开启时区并且配置自己的时区: 查询手册找到所有的时区有: 所以修改配置为: 重启apache问题解决

  10. 【BZOJ1048】分割矩阵(记忆化搜索,动态规划)

    [BZOJ1048]分割矩阵(记忆化搜索,动态规划) 题面 BZOJ 洛谷 题解 一个很简单的\(dp\),写成记忆化搜索的形式的挺不错的. #include<iostream> #inc ...