历届试题 地宫取宝  
时间限制:1.0s   内存限制:256.0MB
    
问题描写叙述
  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
例子输出

dp[x][y][num][maxValue]  代表走到(x,y)位置的时候手里持有num个宝贝并且最大值为maxValue的方案数.

该数组一開始初始化为-1.

#include <iostream>
#include <cmath>
#include <cstdio>
#include <cstring>
using namespace std;
#define eps 10e-10
#define N 1000000007
int ans;
int d[51][51][13][14];
int p[51][51];
int n,m,k;
int dfs(int x,int y,int num,int maxvalue){
if(d[x][y][num][maxvalue+1] != -1){//表示这个状态已经訪问过了,方案数已经确定了.
return d[x][y][num][maxvalue+1];
}
int t = 0;
if(x == n-1 && y == m-1){
if(num==k||(num==k-1&&p[x][y]>maxvalue))
return d[x][y][num][maxvalue+1] = 1;
else
return d[x][y][num][maxvalue+1] = 0;
}
if(x + 1 < n){
if(p[x][y] > maxvalue){
t += dfs(x+1,y,num+1,p[x][y]);
t %= N;
}
t += dfs(x+1,y,num,maxvalue);
t %= N;
}
if(y + 1 < m){
if(p[x][y] > maxvalue){
t += dfs(x,y+1,num+1,p[x][y]);
t %= N;
}
t += dfs(x,y+1,num,maxvalue);
t %= N;
}
d[x][y][num][maxvalue+1] = t;
return d[x][y][num][maxvalue+1];
}
int main(){
while(cin>>n>>m>>k){
for(int i = 0; i < n; ++i){
for(int j = 0; j < m; ++j)
cin>>p[i][j];
}
memset(d,-1,sizeof(d));
d[0][0][0][0] = dfs(0,0,0,-1);//由于宝贝的最小价值能够为0
cout<<d[0][0][0][0]<<endl;
}
return 0;
}

蓝桥杯 地宫寻宝 带缓存的DFS的更多相关文章

  1. 蓝桥杯 地宫寻宝 DFS 动态规划

    #define _CRT_SECURE_NO_WARNINGS #include <iostream> #include <cstdio> #include <cstdl ...

  2. 蓝桥杯之剪格子(经典dfs)

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

  3. 蓝桥杯 历届试题 网络寻路(dfs搜索合法路径计数)

    X 国的一个网络使用若干条线路连接若干个节点.节点间的通信是双向的.某重要数据包,为了安全起见,必须恰好被转发两次到达目的地.该包可能在任意一个节点产生,我们需要知道该网络中一共有多少种不同的转发路径 ...

  4. 蓝桥杯历届试题 危险系数(dfs或者并查集求无向图关于两点的割点个数)

    Description 抗日战争时期,冀中平原的地道战曾发挥重要作用. 地道的多个站点间有通道连接,形成了庞大的网络.但也有隐患,当敌人发现了某个站点后,其它站点间可能因此会失去联系. 我们来定义一个 ...

  5. 蓝桥杯 历届试题 剪格子(dfs搜索)

    历届试题 剪格子 时间限制:1.0s   内存限制:256.0MB 问题描述 如下图所示,3 x 3 的格子中填写了一些整数. +--*--+--+ |* || +--****--+ ||* | ** ...

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

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

  7. 蓝桥杯 算法提高 8皇后·改 -- DFS 回溯

      算法提高 8皇后·改   时间限制:1.0s   内存限制:256.0MB      问题描述 规则同8皇后问题,但是棋盘上每格都有一个数字,要求八皇后所在格子数字之和最大. 输入格式 一个8*8 ...

  8. 蓝桥杯练习系统历届试题 带分数 dfs

    问题描述 100 可以表示为带分数的形式:100 = 3 + 69258 / 714. 还可以表示为:100 = 82 + 3546 / 197. 注意特征:带分数中,数字1~9分别出现且只出现一次( ...

  9. 蓝桥杯-历届试题 剪格子(dfs)

    历届试题 剪格子   时间限制:1.0s   内存限制:256.0MB        问题描述 如下图所示,3 x 3 的格子中填写了一些整数. +--*--+--+|10* 1|52|+--**** ...

随机推荐

  1. Java泛型中的协变和逆变

    Java泛型中的协变和逆变 一般我们看Java泛型好像是不支持协变或逆变的,比如前面提到的List<Object>和List<String>之间是不可变的.但当我们在Java泛 ...

  2. hystrix 解决服务雪崩效应

    1.服务雪崩效应 默认情况下tomcat只有一个线程池去处理客户端发送的所有服务请求,这样的话在高并发情况下,如果客户端所有的请求堆积到同一个服务接口上, 就会产生tomcat的所有线程去处理该服务接 ...

  3. linux 配置Java、Mysql、Tomcat、Redis开发环境

    1.安装四个依赖 以下四个依赖必须按顺序联网安装:yum install glibc.i686yum -y install libaio.so.1 libgcc_s.so.1 libstdc++.so ...

  4. c Xcode has incompatible definitions in different translations units

    解决方案: build > setting enable module 改为No

  5. CAD交互绘制文字(com接口)

    在cad设计时,需要绘制文字,用户可以设置设置绘制文字的高度等属性. 主要用到函数说明: _DMxDrawX::DrawText 绘制一个单行文字.详细说明如下: 参数 说明 DOUBLE dPosX ...

  6. Entity Framework 6.x介绍

    一.简介 Entity Framework是一个ORM框架,可以在SQL Server,Oracle,DB2,MySQL等数据库上使用.其发展到现在已经到6.x版本了,同时该版本也是被官方所推荐使用. ...

  7. vue之props传值与单向数据流

    (1)组件通信 父组件向子组件传递数据.这个正向传递数据的过程就是通过props来实现的. 两者区别:props中声明的数据与组件data函数return返回的数据的主要区别就是props来自父级,而 ...

  8. 从Excel读取数据,然后分析相似的数据,多线程处理(多线程比较相似的字符串,统计出相似的数量及字符串)

    之前的jar包有问题,现已修改. 需要的jar包,已修改 自己去Maven中央仓库下载jar包. excel数据: 直接上代码. 程序再度优化了一遍.之后如果想再度精准,可能需要建模,最近没空继续做了 ...

  9. 使用github作为maven仓库

    本文介绍的这种使用 github 作为 maven 仓库的思路主要为: github的项目上创建mvn-repo分支,使用mvn-repo分支作为maven仓库 配 置 pom.xml 使用 targ ...

  10. [Python3网络爬虫开发实战] 2.2-网页基础

    用浏览器访问网站时,页面各不相同,你有没有想过它为何会呈现这个样子呢?本节中,我们就来了解一下网页的基本组成.结构和节点等内容. 1. 网页的组成 网页可以分为三大部分——HTML.CSS和JavaS ...