蓝桥杯第五届第9题

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

思路:
采用深度搜索去检索每一种方案,每个格子上的物品如果大于自己拥有物品的最大值,可以选择拿或不拿,选择完后走右或走下。
递归结束条件,未到达终点所拥有物品已经超过k,或到达了出口

代码:

public class Main9 {static int[][] map;static int ans;static int n, m, k;public static void main(String[] args) {Scanner sc = new Scanner(System.in);n = sc.nextInt();m = sc.nextInt();k = sc.nextInt();map = new int[n][m];for (int i = 0; i < n; i++) {for (int j = 0; j < m; j++) {map[i][j] = sc.nextInt();}}dfs(0, 0, -1, 0);System.out.println(ans);}/*** * @param i 所在格子的横坐标* @param j    所在格子的纵坐标* @param max   当前拥有的最大价值的宝贝的价值* @param cnt    当前拥有宝贝的数量*/private static void dfs(int i, int j, int max, int cnt) {//当前拥有的宝贝数大k,不符合if (cnt > k) {return;}//超出了边界if (i == n || j == m) {return;}int price = map[i][j];//处于出口,判断当前是否满足要求if (i == n - 1 && j == m - 1) {if (cnt == k || (cnt == k - 1 && price > max)) {ans++;ans %= 1000000007;}return;}//如果这个格子的宝贝大于拥有的最大价值则可以拿if (price > max) {dfs(i + 1, j, price, cnt + 1);//下dfs(i, j + 1, price, cnt + 1);//右}dfs(i + 1, j, max, cnt);//不拿 下dfs(i, j + 1, max, cnt);//不拿 右}}

X 国王有一个地宫宝库-dfs相关推荐

  1. 三星的国王:一个主席的狡猾和腐败的统治

    1987 年 12 月 1 日,在父亲李秉哲逝世两周后,李健熙接任三星董事长.而今,三星盈利为 1987 年的 39 倍.历时 25 年,从一家韩国企业成长为一个国际性大公司. The Verge 撰 ...

  2. 最近发现的一个学习宝库

    这是学习笔记的第 2437篇文章 上学的时候不大爱看课本,总是有学霸说要把书看薄,但是我没有很好的践行下去,现在几十年过去了,回头来看,除了带着一丝新奇,还有一种探索欲,为什么当时没有搞明白,现在可以 ...

  3. 2014蓝桥杯:地宫取宝(DFS详解)

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

  4. Java算法学习:蓝桥杯——地宫寻宝(DFS+动态规划—记忆型递归)

    Java算法学习:蓝桥杯--地宫寻宝(DFS✖记忆型递归) 题目: 标题:地宫取宝X 国王有一个地宫宝库.是 n x m 个格子的矩阵.每个格子放一件宝贝.每个宝贝贴着价值标签.地宫的入口在左上角,出 ...

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

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

  6. 蓝桥杯 地宫取宝【第五届】【省赛】【C组】C++ dfs 记忆化搜索

    资源限制 时间限制:1.0s   内存限制:256.0MB X 国王有一个地宫宝库.是 n x m 个格子的矩阵.每个格子放一件宝贝.每个宝贝贴着价值标签. 地宫的入口在左上角,出口在右下角. 小明被 ...

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

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

  8. 【蓝桥杯】历届试题 地宫取宝

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

  9. 问题 1436: 地宫取宝 (dp)

    题目传送门 时间限制: 1Sec 内存限制: 128MB 提交: 423 解决: 94 题目描述 X  国王有一个地宫宝库.是  n  x  m  个格子的矩阵.每个格子放一件宝贝.每个宝贝贴着价值标 ...

最新文章

  1. 互联网普适性职业生涯?
  2. 背景颜色的不透明度,但不是文本[重复]
  3. echarts - geo 绘制无数据区域的区域
  4. 任务间通信的基本知识
  5. SAP Fiori Elements 应用里和 Fiori 3 相关的外观设置
  6. [MODX] 2. Chunks $
  7. Android 时间维护服务 TimeService(针对于特殊定制设备)
  8. 【Itext】7步制作Itext5页眉页脚pdf实现第几页共几页
  9. LVS-DR,real-server为windows 2008的配置
  10. quicksearch连接oracle,dos命令下连接oracle数据库表
  11. c# async await异步方法
  12. 单片机蜂鸣器唱歌c语言程序,STC89C52单片机蜂鸣器唱歌实验
  13. MAC常用java开发软件
  14. SEO优化软件测试初学者,一款文章原创度检测工具,做seo的你应该需要!
  15. Git 学习笔记——管理员篇
  16. 怎样编配吉他独奏曲(上)
  17. Android的高德地图实现行政区域显示
  18. C语言100个囚徒和灯泡,经典算法问题其一:百日囚徒问题
  19. 微信小程序自定义导航栏组件,完美适配所有手机,可实现各种功能和情况
  20. java idea打不开的问题修复记录

热门文章

  1. Exception evaluating SpringEL expression: “#fields.hasErrors()“ (template
  2. Unity3D Shader系列之描边
  3. 准确率、精度和召回率
  4. python numpy.ndarray中的数据转为int型
  5. 西门子PLC S7-1200如何实现远程上下载?
  6. 西门子S7-200 Smart PLC下载
  7. 计算机网络:移动IP
  8. PC端移动端IP查询
  9. violate关键字---java高并发
  10. 将JSON数组转化为List集合