HDU1978--How many ways

HUSTOJ 基础题组3 问题 R How many ways 如上图,机器人一开始在(1,1)点,并拥有4单位能量,蓝色方块表示他所能到达的点,如果他在这次路径选择中选择的终点是(2,4)点,当他到达(2,4)点时将拥有1单位的能量,并开始下一次路径选择,直到到达(6,6)点。这可能是一个很大的数,输出的结果对10000取模。这是一个简单的生存游戏,你控制一个机器人从一个棋盘的起始点(1,1)走到棋盘的终点(n,m)。4.当机器人选择了一条可行路径后,当他走到这条路径的终点时,他将只有终点所标记的能量。1.机器人一开始在棋盘的起始点并有起始点所标有的能量。 阅读详情
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
/*
动态规划法。
对每一个点,在他所能到达的范围内都要+上能到达这个点的路径种数
比如
2 1 1 1 1 1
1 1 1 1 1 1
1 1 1 1 1 1
1 1 1 1 1 1
1 1 1 1 1 1
1 1 1 1 1 1
dp[2][2]=3;
注意从2直接到右下角的那个1只算一种。
因为路径终点确定就是1种。
*/
#include <iostream>
#include <cstdio>
using namespace std;
#define maxn 1008
int dp[maxn][maxn];
int main()
{
	int t;
	scanf("%d",&t); 
	while(t--)
	{
		int r,c;
		scanf("%d%d",&r,&c);
		int key;
		dp[1][1]=1;
		for(int i=1;i<=r;i++)
		{
			for(int j=1;j<=c;j++)
			{
				scanf("%d",&key);
				for(int k=0;k<=key;k++)
				{
					for(int l=0;l+k<=key;l++)
					{
						if(!k&&!l)
						{
							continue;
						}
						dp[i+k][j+l]=(dp[i][j]+dp[i+k][j+l])%10000;
					}
				}
			}
		}
		printf("%d\n",dp[r][c]);
	}
	return 0;
}

/*
传说中的记忆化搜索。深搜比如DFS(i,j)返回的值
表示从i,j到右下角的路径种数。
则1.1这个点+上该点所能达到的位置的DFS就是答案。
*/
#include <iostream>
#include <cstdio>
using namespace std;
int r,c;
#define maxn 108
int key[maxn][maxn];
int sum[maxn][maxn];
int dfs(int x,int y)
{
	if(x==r&&y==c)
	{
		return 1;
	}//从终点到终点的路径显然是1.
	int val=key[x][y];
	int temp=0;
	for(int i=0;i<=val;i++)
	{
		for(int j=0;i+j<=val;j++)
		{
			if(!i&&!j)
			{
				continue;
			}
			if(x+i<=r&&y+j<=c)
			{
				if(sum[x+i][y+j]!=-1)
				{
					temp+=sum[x+i][y+j],temp%=10000;
				}
				else temp+=dfs(x+i,y+j),temp%=10000;
			}
		}
	}
	sum[x][y]=temp;
	return temp;
}
int main()
{
	int t;
	scanf("%d",&t);
	while(t--)
	{
		scanf("%d%d",&r,&c);
		for(int i=1;i<=r;i++)
		{
			for(int j=1;j<=c;j++)
			{
				scanf("%d",&key[i][j]);
				sum[i][j]=-1;
			}
		}
		printf("%d\n",dfs(1,1));
	}
	return 0;
}


 

 

du熊机器人题解(棋盘问题) du熊机器人走棋盘题解。du熊正在玩一个别人刚送给它的机器人。这个机器人只能在一个棋盘中行走,棋盘的左上角格子为(0, 0),右下角格子为(X, Y)。 立即下载

相关推荐

个人信息保护合规审计人员(高级)能力考核试卷+面试模拟

《个人信息保护合规审计考试与面试指南》 摘要:本文提供个人信息保护合规审计考试及面试的全面指导。考试采用闭卷笔试形式,满分100分,合格线75分,时长120分钟,包含单选、多选、判断题及综合案例分析题。内容涵盖《个人信息保护法》核心条款、审计程序、风险评估等实务要点。面试环节采用情景模拟方式,重点考察应试者在压力下处理审计独立性、客户关系与监管要求的平衡能力,以及应对数据泄露等突发事件的处置流程。案例题聚焦大型互联网平台的数据收集、共享、跨境传输等高风险环节的合规审计,要求设计完整的审计方案框架。面试评分标

qq_41525079的博客 1144

计蒜客:机器人走方格

题解:机器人走方格!

kzhshsh的博客 1047

VCS HVP与验证计划planner:数字IC验证环境搭建与收敛实践

在数字IC验证中,VCS 是广泛使用的编译型仿真器,HVP 通常指面向硬件验证平台的高性能编译选项集,用于开启 SystemVerilog 类、随机约束和 NTB 等能力;planner 则指验证计划管理,核心是把功能点与测试用例、覆盖点建立映射。理解 VCS 先编译后仿真的原理,有助于优化增量编译、调试访问和覆盖率采集,提升回归收敛效率。规划驱动让激励不再散落,设计改版时能快速定位受影响用例,交接和覆盖率收敛更有依据。无论是 UVM 环境搭建、编译参数选择,还是验证计划表维护,都需要把工具选项与规划方法结

weixin_42543046的博客 340

hdu 1948 How many ways

How many ways Time Limit: 3000/1000 MS (Java/Others)Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 166Accepted Submission(s): 105 Problem Description 这是一个简单的生存游戏,你...

weixin_30846599的博客 456

2024年中科大分子生物研究生考试建议

分子生物学复习资料及往年考题。

qq_43337249的博客 2956

数字后端实战指南 | Innovus Function ECO全流程解析(从LAB到Tapeout)

本文深入解析了在Cadence Innovus工具中进行Function ECO的全流程实战指南。从LAB环境搭建到Tapeout前的签核验证,详细拆解了Pre-mask与Post-mask ECO的核心步骤、关键命令(如ecoDesign)以及常见避坑方案。重点阐述了如何应对时序、DRC等挑战,并强调了备用单元管理与严格验证的重要性,是数字后端工程师提升综合能力的必备参考。

weixin_28452161的博客 643

GUETOJ - 1119 How many ways(动态规划)

http://acm.guet.edu.cn/problemset/problem/1119 #include #include #include using namespace std; const int MAX_N = 101; int N, M, T; int a[MAX_N][MAX_N], dp[MAX_N][MAX_N]; bool in(int x, int y){

NightWind 805

最新版 Akamai 逆向 风控破解

经过测试,捷星 jetstar.com,德州仪器 ti.com,w6 wizzair.com,还有一些航空公司的都是可以实现一个并发的有需要的可以。

m0_72605044的博客 6626

[HDOJ-1978]How many ways

Problem Description 这是一个简单的生存游戏,你控制一个机器人从一个棋盘的起始点(1,1)走到棋盘的终点(n,m)。游戏的规则描述如下: 1.机器人一开始在棋盘的起始点并有起始点所标有的能量。 2.机器人只能向右或者向下走,并且每走一步消耗一单位能量。 3.机器人不能在原地停留。 4.当机器人选择了一条可行路径后,当他走到这条路径的终点时,他将只有终点所标记的能量。 如上图,机...

GreatWzi的博客 674

大白话系列:什么是微服务

用大白话和实际例子来通俗易懂地告诉你什么是微服务~

2401_87403086的博客 1242

OpenClaw Skill 开发全攻略|2026 最新机制 + 文件处理实操,看完直接落地开发

很多新手刚接触时,会把 Skill 想得很复杂,其实大可不必。OpenClaw 中的每个 Skill,本质就是一套“能力描述 + 执行逻辑”的组合包,简单说就是“告诉 AI 你能做什么、怎么做,它就会调用你”,核心特征可以总结为这几点,好记又实用:核心载体:以文件夹为单位,不管多简单的 Skill,文件夹里都必须有 SKILL.md 文件——这是 AI 识别技能的唯一依据,少了它,再完善的代码也没用;

haolove527的专栏 7027

Hdu 1978 How many ways

Hdu 1978 How many ways 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1978 解题思路:vis[n][m]置1,其他全置0,记忆化搜索搜一遍就行了; 代码如下: #include<bits/stdc++.h> using namespace std; int num[105][105],vis[105][105...

weixin_43823753的博客 159

基于XDMA 的PCIE读写DDR

基于XDMA 的PCIE读写DDR 概述:   想实现基于FPGA的PCIe通信,查阅互联网各种转载…基本都是对PCIe的描述,所以想写一下基于XDMA的PCIe通信的实现(PCIe结构仅做简单的描述(笔记),了解详细结构移至互联网)。 实现功能:PC通过PCIE读写DDR,同时用户通过逻辑代码可以读取被写入DDR内的数据(我是通过VIO实现DDR任意地址,任意数据大小的读取。)。 实践实践!!! 说明: 参考文档: PCI Express Base Specification Revision 3.0 P

Crazzy_M的博客 1万+

HDU1978 How many ways 【DP】

How many ways Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 3268    Accepted Submission(s): 1930 Problem Description 这是一个简单的生存游戏,

长风的专栏 1289

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

hdu1978 How many ways 暴力和记忆化

hdu1978 How many ways 题目传送门 Problem Description 这是一个简单的生存游戏,你控制一个机器人从一个棋盘的起始点(1,1)走到棋盘的终点(n,m)。游戏的规则描述如下: 1.机器人一开始在棋盘的起始点并有起始点所标有的能量。 2.机器人只能向右或者向下走,并且每走一步消耗一单位能量。 3.机器人不能在原地停留。 4.当机器人选择了一条可行路径后,当他走到这...

WWL0702的博客 2064

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

HDU 1978 How many ways

题目地址:点击打开链接 思路:看清题,机器人只能向下或向右走,和杭电1028挺像,把代码随便改了下,结果老是运行出错,把代码嵌到别人的代码试试才发现死循环了,每次走的步数是向下和和向右的和 错误代码: #include #include using namespace std; int map1[105][105]; int dp[105][105]; int n,m; int dfs

Java识堂,一个有干货的微信公众号 509

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

HDU-1978 How many ways

HDU-1978 How many ways Problem Description 这是一个简单的生存游戏,你控制一个机器人从一个棋盘的起始点(1,1)走到棋盘的终点(n,m)。游戏的规则描述如下: 1.机器人一开始在棋盘的起始点并有起始点所标有的能量。 2.机器人只能向右或者向下走,并且每走一步消耗一单位能量。 3.机器人不能在原地停留。 4.当机器人选择了一条可行路径后,当他走到这条路径的终...

weixin_43406404的博客 237

HDU 1978 How many ways (DP,计数)

http://acm.hdu.edu.cn/showproblem.php?pid=1978 How many ways Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 3022    Accepted Submission(s

fcbruce 1129

hdu 1978 How many ways

题目:http://acm.hdu.edu.cn/showproblem.php?pid=1978 第一次接触记忆化搜索+DP.. 题目中“他将只有终点所标记的能量”是解题的关键啊!一开始还老想剩余能量怎么处理.....悲剧。 这题可以分为两种DP方式,一种是当前的这个点可以到达其他点的方法数和能到达当前点的方法数。。 两种状态转移方程也差不多。 下面分别是两种方法的AC代码

1785

How many ways HDU - 1978

这是一个简单的生存游戏,你控制一个机器人从一个棋盘的起始点(1,1)走到棋盘的终点(n,m)。游戏的规则描述如下:  1.机器人一开始在棋盘的起始点并有起始点所标有的能量。  2.机器人只能向右或者向下走,并且每走一步消耗一单位能量。  3.机器人不能在原地停留。  4.当机器人选择了一条可行路径后,当他走到这条路径的终点时,他将只有终点所标记的能量。 如上图,机器人一开始在(1,1)点,...

Qtt110的博客 214

HDU 1978 How Many Ways

原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=1978题目大意:<中文题>思路:二位的DP数组记录下某一位置有多少种走法。然后通过dfs的方法来深搜所有的点。每次将dp[i][j]加成dfs返回的值。最终dp[1][1]就是所求解代码如下:#include <iostream> #include <cstdio> #include <cstring>

首WA是我的 303

HDU 1978 How many ways (DP)

一个比较简单的DP,希望读者在看题解之前

AC_Arthur的专栏 1330
上一篇: HDU1789--Doing Homework again
下一篇: HDU1081--To The Max
SCUT_Pein
博客等级 码龄14年 54粉丝 480原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值