HDU 1208 Pascal's Travels 经典 跳格子的方案数 (dp或者记忆化搜索)
Description
Consider the 4 x 4 board shown in Figure 1, where the solid circle identifies the start position and the dashed circle identifies the target. Figure 2 shows the three paths from the start to the target, with the irrelevant numbers in each removed.

Figure 1

Figure 2
Input
Output
Sample Input
2331
1213
1231
3110
4
3332
1213
1232
2120
5
11101
01111
11111
11101
11101
-1
Sample Output
0
7
dp[i+a[i][j]][j]+=dp[i][j];
if(j+a[i][j]<=n)
dp[i][j+a[i][j]]+=dp[i][j];
#include <iostream>
#include <cstdio>
#include<stdio.h>
#include<algorithm>
#include<cstring>
#include<math.h>
#include<memory>
#include<queue>
#include<vector>
using namespace std;
#define max_v 40
__int64 dp[max_v][max_v];//dp[i][j] 从1,1到i,j的方案数
int a[max_v][max_v];
char s[max_v];
int main()
{
int n;
while(~scanf("%d",&n))
{
if(n==-)
break;
for(int i=;i<=n;i++)
{
scanf("%s",s);
int l=strlen(s);
int k=;
for(int j=;j<l;j++)
{
a[i][k++]=s[j]-'';
}
}
memset(dp,,sizeof(dp));
dp[][]=;
for(int i=;i<=n;i++)
{
for(int j=;j<=n;j++)
{
if(a[i][j]==)
continue;
if(i+a[i][j]<=n)
dp[i+a[i][j]][j]+=dp[i][j];
if(j+a[i][j]<=n)
dp[i][j+a[i][j]]+=dp[i][j];
}
}
printf("%I64d\n",dp[n][n]);
}
return ;
}
思路二:
记忆化搜索
注意这里dp的含义和上面dp的含义不同
这里的dp:dp[i][j]代表从i,j出发的方案数
#include <iostream>
#include <cstdio>
#include<stdio.h>
#include<algorithm>
#include<cstring>
#include<math.h>
#include<memory>
#include<queue>
#include<vector>
using namespace std;
#define max_v 40
__int64 dp[max_v][max_v];//dp[i][j] 从i,j出发的方案数
int a[max_v][max_v];
char s[max_v];
int n;
__int64 dfs(int x,int y)
{
if(dp[x][y]>)//记忆化搜索
return dp[x][y];
if(x==n&&y==n)//搜到终点
return ;
int xx,yy;
if(a[x][y]==)//不能跳的点
return ;
for(int k=;k<=;k++)//两个方向,下或右
{
if(k==)
{
xx=x+a[x][y];
yy=y;
}else
{
xx=x;
yy=y+a[x][y];
}
if(xx<=n&&yy<=n)//避免越界
dp[x][y]+=dfs(xx,yy);
}
return dp[x][y];
}
int main()
{
while(~scanf("%d",&n))
{
if(n==-)
break;
for(int i=;i<=n;i++)
{
scanf("%s",s);
int l=strlen(s);
int k=;
for(int j=;j<l;j++)
{
a[i][k++]=s[j]-'';
}
}
memset(dp,,sizeof(dp));
printf("%I64d\n",dfs(,));//从1,1开始搜
}
return ;
}
HDU 1208 Pascal's Travels 经典 跳格子的方案数 (dp或者记忆化搜索)的更多相关文章
- HDU 1513 Palindrome:LCS(最长公共子序列)or 记忆化搜索
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1513 题意: 给你一个字符串s,你可以在s中的任意位置添加任意字符,问你将s变成一个回文串最少需要添加 ...
- hdu 1208 Pascal's Travels
http://acm.hdu.edu.cn/showproblem.php?pid=1208 #include <cstdio> #include <cstring> #inc ...
- HDU 4597 Play Game(区间DP(记忆化搜索))
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4597 题目大意: 有两行卡片,每个卡片都有各自的权值. 两个人轮流取卡片,每次只能从任一行的左端或右端 ...
- HDU 4597 Play Game (DP,记忆化搜索,博弈)
题意:Alice和Bob玩一个游戏,有两个长度为N的正整数数字序列,每次他们两个,只能从其中一个序列,选择两端中的一个拿走.他们都希望可以拿到尽量大的数字之和, 并且他们都足够聪明,每次都选择最优策略 ...
- HDU 4597 Play Game (DP,记忆化搜索)
Play Game Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65535/65535 K (Java/Others)Total S ...
- HDU 2089 不要62(数位DP·记忆化搜索)
题意 中文 最基础的数位DP 这题好像也能够直接暴力来做 令dp[i][j]表示以 j 开头的 i 位数有多少个满足条件 那么非常easy有状态转移方程 dp[i][j] = sum{ dp[ ...
- HDU 3652 B-number(数位dp&记忆化搜索)
题目链接:[kuangbin带你飞]专题十五 数位DP G - B-number 题意 求1-n的范围里含有13且能被13整除的数字的个数. 思路 首先,了解这样一个式子:a%m == ((b%m)* ...
- HDU 4960 Another OCD Patient(记忆化搜索)
HDU 4960 Another OCD Patient pid=4960" target="_blank" style="">题目链接 记忆化 ...
- POJ 2704 Pascal's Travels 【DFS记忆化搜索】
题目传送门:http://poj.org/problem?id=2704 Pascal's Travels Time Limit: 1000MS Memory Limit: 65536K Tota ...
随机推荐
- Java:类加载器(ClassLoader)
听上去很高端,其实一般自定义类加载器不需要用户去实现解析的过程,只要负责实现获取类对应的.class字节流部分就ok了,摘录深入理解Java虚拟机的一段话 虚拟机设计团队把类加载阶段中的“通过一个类的 ...
- 判断当前浏览器是否支持HTML5的日期控件
function checkSupportH5Date(){ var i = document.createElement("input"); i.setAttribute(&qu ...
- 《Linux命令行与Shell脚本编程大全第2版》读书笔记
公司说不准用云笔记了,吓得我赶紧把笔记贴到博客上先..... 近3年前的了,只有一半的章节,后面的没空记录了.... 第1章 可以cat /proc/meminfo文件来观察Linux系统上虚拟内存的 ...
- linux 查看在线服务进程
输入命令:netstat -ltunp 注意,这个-与l之间是没有空格的 要对进程进行监测和控制,首先必须要了解当前进程的情况,也就是需要查看当前进程, 而ps命令(Process Status)就 ...
- IoT Gateway Based on OSGi
1. OSGi Knowleage 2. OSGi.Net on Windows 3. OSGi with JAVA 4. OSGi with Qt and C++ 5. Architecture o ...
- Flutter知识点:数据存储之sqflite
sqflite是一款轻量级的关系型数据库,类似SQLite. 在Flutter平台我们使用sqflite库来同时支持Android 和iOS. 使用介绍 1.首选需要在pubspec.yaml 导入库 ...
- window 7 & 2008R2 多核cpu套接字泄露补丁
http://hotfixv4.microsoft.com/Windows%207/Windows%20Server2008%20R2%20SP1/sp2/Fix373886/7600/free/43 ...
- androidcookie存储sqllite
/**声明一些数据库操作的常量*/ private static SQLiteDatabase mDatabase = null; private static final String DATA ...
- iis7 未注册framework4 导致 莫名的404错误
server2008 R2 IIS7 已经安装 安装framework 4.6.1 然后建立站点 404错误 :在站点目录自动生成了 asp_client 重新注册到 iis(不需要) iisre ...
- 【转】15个必须知道的chrome开发者技巧
一.快速切换文件 如果你使用过sublime text,那么你可能不习惯没有Go to anything这个功能的覆盖.你会很高兴听到chrome开发者功能也有这个功能,当DevTools被打开的时候 ...