1001 猫和老鼠(4)

Time Limit : 2000/1000ms (Java/Other) Memory Limit : 512000/512000K (Java/Other)
Total Submission(s) : 33 Accepted Submission(s) : 16
Font: Times New Roman | Verdana | Georgia
Font Size: ← →
Problem Description
有个小老鼠在校园里收藏了一些它最爱吃的奶酪。
校园可以看成一个长度为n的正方形网格,每个网格可以标记为(p,q),其中,0 <= p , q < n. 每个网格都有一个洞,里面储存了k(0<=k<=100)块奶酪。

现在,小老鼠准备享用这些美味啦。

开始的时候,他在(0,0)这个位置,每到一个地方,它都会吃光这个地方的奶酪,然后沿着水平或者垂直的方向到达另外一个地方。麻烦的是,有个很凶的猫总是在它的洞口附近,所以他每次最多移动K个位置,否则就会被这只猫吃掉。更糟糕的是,每在一个地方吃过奶酪,小老鼠都会变胖,所以,为了获得足够下一次逃跑的能量,它每次只能去比当前位置的奶酪更多的格子。
现在已知n和k,以及在每个网格的洞中小老鼠储存的奶酪的数量,请计算小老鼠在无法移动之前,一共最多能吃到多少块奶酪。
Input
题目包含多组测试数据。

每组测试数据组成如下:
首先一行包含2个不超过100的正整数n和k;
接下来n行,每行包含n个数:
第一行n个数分别表示 (0,0) (0,1) … (0,n-1)这些位置储存的奶酪数量;
第二行n个数分别表示(1,0), (1,1), … (1,n-1)这些位置储存的奶酪数量;
以此类推。

输入数据以两个-1结束。
Output
请输出小老鼠最多 能够吃到的奶酪数量,每组数据输出一行。
Sample Input
3 1
1 2 5
10 11 6
12 12 7
-1 -1
Sample Output
37

//f[x][y]:从x,y出发能吃到的最多的奶酪
#include <bits/stdc++.h>
using namespace std;
const int maxn = 110;int n, k, a[maxn][maxn];
int f[maxn][maxn];int dx[] = {1,-1,0,0};
int dy[] = {0,0,1,-1};
int dfs(int x,int y){if(f[x][y])return f[x][y];f[x][y] = a[x][y];for(int i = 1; i <= k; i++){for(int j = 0; j < 4; j++){int nx = x+dx[j]*i, ny = y+dy[j]*i;if(nx>=0&&nx<=n-1&&ny>=0&&ny<=n-1&&a[nx][ny]>a[x][y]){f[x][y] = max(f[x][y], a[x][y]+dfs(nx,ny));}}}return f[x][y];
}int main(){while(cin>>n>>k &&n!=-1&&k!=-1){memset(f,0,sizeof(f));for(int i = 0; i < n; i++)for(int j = 0; j < n; j++)cin>>a[i][j];cout<<dfs(0,0)<<"\n";}return 0;
}

1002 How many ways

Time Limit : 3000/1000ms (Java/Other) Memory Limit : 32768/32768K (Java/Other)
Total Submission(s) : 21 Accepted Submission(s) : 17
Font: Times New Roman | Verdana | Georgia
Font Size: ← →
Problem Description
这是一个简单的生存游戏,你控制一个机器人从一个棋盘的起始点(1,1)走到棋盘的终点(n,m)。游戏的规则描述如下:
1.机器人一开始在棋盘的起始点并有起始点所标有的能量。
2.机器人只能向右或者向下走,并且每走一步消耗一单位能量。
3.机器人不能在原地停留。
4.当机器人选择了一条可行路径后,当他走到这条路径的终点时,他将只有终点所标记的能量。

如上图,机器人一开始在(1,1)点,并拥有4单位能量,蓝色方块表示他所能到达的点,如果他在这次路径选择中选择的终点是(2,4)

点,当他到达(2,4)点时将拥有1单位的能量,并开始下一次路径选择,直到到达(6,6)点。
我们的问题是机器人有多少种方式从起点走到终点。这可能是一个很大的数,输出的结果对10000取模。
Input
第一行输入一个整数T,表示数据的组数。
对于每一组数据第一行输入两个整数n,m(1 <= n,m <= 100)。表示棋盘的大小。接下来输入n行,每行m个整数e(0 <= e < 20)。
Output
对于每一组数据输出方式总数对10000取模的结果.
Sample Input
1
6 6
4 5 6 6 4 3
2 2 3 1 7 2
1 1 4 6 2 7
5 8 4 3 9 5
7 6 6 2 1 5
3 1 1 3 7 2
Sample Output
3948
Author
xhd
Source
2008杭电集训队选拔赛

//f[x][y]:从x,y出发到达n,m的路径数量
#include <bits/stdc++.h>
using namespace std;
const int maxn = 110, mod=10000;int n, m, a[maxn][maxn];
int f[maxn][maxn];int dfs(int x,int y){if(f[x][y]!=-1)return f[x][y];f[x][y] = 0;for(int i = 0; i <= a[x][y]; i++){for(int j = 0; j <= a[x][y]-i; j++){int nx = x+i, ny = y+j;if(nx<=n&&ny<=m){f[x][y] = (f[x][y]+dfs(nx,ny))%mod;}}}return f[x][y];
}int main(){int T;  cin>>T;while(T--){memset(f,-1,sizeof(f));//e可能为0cin>>n>>m;f[n][m] = 1;for(int i = 1; i <= n; i++)for(int j = 1; j <= m; j++)cin>>a[i][j];cout<<dfs(1,1)<<"\n";}return 0;
}

HDOJ水题集合7:记忆化搜索相关推荐

  1. HDOJ水题集合11:桶排序, 折半搜索

    Solved Problem ID Title Ratio(Accepted / Submitted) 1001 sort 31.25%(15/48) 1002 解方程 34.29%(12/35) 1 ...

  2. HDOJ水题集合1:最小生成树(Kruskal)

    1001 畅通工程 HDOJ1232 并查集集合个数 畅通工程 Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/32768 K ( ...

  3. HDOJ水题集合8:DBFS

    1001 内蒙创业 内蒙创业 Time Limit : 3000/1000ms (Java/Other) Memory Limit : 65535/32768K (Java/Other) Total ...

  4. HDOJ水题集合6:杂题

    1001 求全排列(1) Time Limit : 2000/1000ms (Java/Other) Memory Limit : 32768/32768K (Java/Other) Total Su ...

  5. HDOJ水题集合5:杂题

    1001 拯救丁爸 BFS模板 拯救丁爸 Time Limit : 2000/1000ms (Java/Other) Memory Limit : 32768/32768K (Java/Other) ...

  6. HDOJ水题集合4:杂题

    概述 Solved Problem ID Title Ratio(Accepted / Submitted) 1001 更高.更快.更强 41.30%(19/46)(模拟) 1002 迷宫事件,胡恺再 ...

  7. HDOJ水题集合2:最短路(Dijkstra)

    1001 畅通工程续 HDOJ1874 裸Dijkstra 畅通工程续 Time Limit : 3000/1000ms (Java/Other) Memory Limit : 32768/32768 ...

  8. 巧用记忆化搜索代替暴力递归(洛谷P1464题题解,Java语言描述)

    题目要求 P1464题目链接 分析 如果--你信了这题干,真的写了递归--TLE警告!!! 所以,就需要优化嘛-- [−9223372036854775808,9223372036854775807] ...

  9. 记忆化搜索题目总结(1)

    记忆化搜索题目总结(1) 记忆化搜索题目总结1 一 概述 二 引题 DFS做法 记忆化搜索解法 三 例题 数字三角形 滑雪 矩形嵌套 硬币问题 New Year and Fireworks 一. 概述 ...

最新文章

  1. 并发编程-26 高并发处理手段之服务降级与服务熔断 + 数据库切库分库分表
  2. 在云服务器上执行C程序和python程序(centos系统)
  3. 设置路由器端口转发功能如何操作
  4. [css] 不使用border画出1px高的线,在不同浏览器的标准和怪异模式下都能保持效果一样
  5. 没想到啊!3980元的Web前端视频今日免费送。
  6. 单目可见光静默活体检测 Binary or Auxiliary Supervision论文解读
  7. 飞行姿态角度表示: heading pitch roll
  8. 运行vue init webpack vueTest时报错
  9. 利用 Conda 尝鲜 Python 3.10 不一样的特性 快来试试
  10. Git 与 Github 的使用 —— 下载单个图像或单个文件夹
  11. html点击按钮切换图片代码_单次点击实现远程代码执行:内容管理框架Drupal恶意图片上传漏洞利用链分析...
  12. url去重:布隆过滤器-python实现
  13. button触发ajax只进入error,不进入sucess
  14. C3AE: Exploring the Limits of Compact Model for Age Estimation
  15. 使用C语言编写一个Jacobi迭代程序
  16. 用python画函数图像
  17. 关闭Windows Server 2012的IE增强安全配置
  18. settimeout一定要清除么?
  19. 线上展厅视觉奇观 广州商迪
  20. 实现高效安全管理云效流水线的7招 |云效

热门文章

  1. 学术论文写作的 paper、code 资源
  2. Java 原生数据类型、Integer
  3. 数学常用公式及规律、结论(二)
  4. apache ftpserver java开发_apache FTPserver安装
  5. 物权法全文内容有哪些呢-广告外链_SEO优化的站外优化工作有哪些?
  6. python创意实用案例-精心整理!9个 Python 实用案例分享
  7. 简单python脚本实例-简单了解python调用其他脚本方法实例
  8. python编程入门-python编程入门(第3版)
  9. @JsonSerialize的使用
  10. java 代码智能提示,如何在Eclipse中设置Java、JavaScript、HTML智能代码提示