hdu1208 dp
题意:给了一个 n * n 的方格图,要从图的左上角走到右下角 ,每次只能向右或者向下走,走的格数为当前格子上的数字,问共有多少中走法。
一开始我看到之后觉得这题完全可以用记忆化搜索来做,dfs 一遍就能找出所有解,这是因为刚刚不久才做过那道记忆化搜索的题目,我用 dp + dfs 敲了一遍之后作死提交,果断AC```怎么可能想想都知道```TLE了,恩其实题目底下就有提示说是遍历所有的路可能会超时,但是我英语不好 orz 。
但事实上即使没有这个提示我也本就应该先考虑普通 DP ,因为上次的记忆化搜索是因为那张图是可以往上下左右四个方向走的,所以普通的顺序 dp 就会面临更新完别的格子之后自己又要更新的情况,但是这次只有向右和向下,所以完全应该第一个想到顺序 dp 的,这是我自己想复杂的,当然也要归咎于我对 dp 和记忆化搜索理解的还不够到位吧。
那么顺序的 dp 其实就非常简单了,dp [ i ] [ j ] 表示走到第( i , j )格的走法数, dp [ 1 ] [ 1 ] 是开始位置,所以标记为 1 ,之后依次遍历每一个点,如果该点 dp 值不为 0 ,即该点可以被走到 ,那么就根据它格子上的数字优化能从这个格点到达的格子的 dp 值。当然,要注意的是当格点数字为 0 的时候就不要对自己进行更新了,因为这样若右下角格子的数字是 0 的话,它就会连续优化自己,与其特判还不如一开始就不操作。优化方式就是将能到达的格点的 dp 值加上当前点的 dp 值。
#include<stdio.h>
#include<string.h>
int a[][];
long long dp[][];
int xx[]={,};
int yy[]={,};
int main(){
int n;
while(scanf("%d",&n)!=EOF&&n!=-){
getchar();
memset(dp,,sizeof(dp));
int i,j;
dp[][]=;
for(i=;i<=n;i++){
for(j=;j<=n;j++){
char m;
scanf("%c",&m);
a[i][j]=m-'';
if(a[i][j]){
if(dp[i][j]){
int dx=i+a[i][j]*xx[],dy=j+a[i][j]*yy[];
if(dx<=n&&dy<=n)dp[dx][dy]+=dp[i][j];
dx=i+a[i][j]*xx[];dy=j+a[i][j]*yy[];
if(dx<=n&&dy<=n)dp[dx][dy]+=dp[i][j];
}
}
}
getchar();
}
/* for(i=1;i<=n;i++){
for(j=1;j<=n;j++){
printf("%d ",dp[i][j]);
}
printf("\n");
}*/
printf("%I64d\n",dp[n][n]);
}
return ;
}
hdu1208 dp的更多相关文章
- HDU1208:Pascal's Travels(DP)
Problem Description An n x n game board is populated with integers, one nonnegative integer per squa ...
- BZOJ 1911: [Apio2010]特别行动队 [斜率优化DP]
1911: [Apio2010]特别行动队 Time Limit: 4 Sec Memory Limit: 64 MBSubmit: 4142 Solved: 1964[Submit][Statu ...
- 2013 Asia Changsha Regional Contest---Josephina and RPG(DP)
题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=4800 Problem Description A role-playing game (RPG and ...
- AEAI DP V3.7.0 发布,开源综合应用开发平台
1 升级说明 AEAI DP 3.7版本是AEAI DP一个里程碑版本,基于JDK1.7开发,在本版本中新增支持Rest服务开发机制(默认支持WebService服务开发机制),且支持WS服务.RS ...
- AEAI DP V3.6.0 升级说明,开源综合应用开发平台
AEAI DP综合应用开发平台是一款扩展开发工具,专门用于开发MIS类的Java Web应用,本次发版的AEAI DP_v3.6.0版本为AEAI DP _v3.5.0版本的升级版本,该产品现已开源并 ...
- BZOJ 1597: [Usaco2008 Mar]土地购买 [斜率优化DP]
1597: [Usaco2008 Mar]土地购买 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 4026 Solved: 1473[Submit] ...
- [斜率优化DP]【学习笔记】【更新中】
参考资料: 1.元旦集训的课件已经很好了 http://files.cnblogs.com/files/candy99/dp.pdf 2.http://www.cnblogs.com/MashiroS ...
- BZOJ 1010: [HNOI2008]玩具装箱toy [DP 斜率优化]
1010: [HNOI2008]玩具装箱toy Time Limit: 1 Sec Memory Limit: 162 MBSubmit: 9812 Solved: 3978[Submit][St ...
- px、dp和sp,这些单位有什么区别?
DP 这个是最常用但也最难理解的尺寸单位.它与“像素密度”密切相关,所以 首先我们解释一下什么是像素密度.假设有一部手机,屏幕的物理尺寸为1.5英寸x2英寸,屏幕分辨率为240x320,则我们可以计算 ...
随机推荐
- http和WebSocket
有关http和WebSocket 的区别网上有很多的质料. 个人在此仅仅是记录以下自己的学习心得,自己的理解. 1. http协议是用在应用层的协议,他是基于tcp协议的,http协议建立链接也必须要 ...
- 筛选datatable
当从数据库里取出一些数据,然后要对数据进行整合,很容易就会想到: DataTable dt = new DataTable();//假设dt是由"SELECT C1,C2,C3 FROM T ...
- ViewPager 如何得到当前的Fragment (使用FragmentPagerAdapter)
使用FragmentPagerAdapter时,难免要在MainActivity 和 当前显示的Fragment间传递数据.但是FragmentPagerAdapter并没有给我们提供类似getCur ...
- mysql timestamp的默认值
当default 0,default '0000-00-00 00:00:00'都失效的时候,请尝试下 ALTER table `coupon_gift` add column `time_end` ...
- 170301、使用Spring AOP实现MySQL数据库读写分离案例分析
使用Spring AOP实现MySQL数据库读写分离案例分析 原创 2016-12-29 徐刘根 Java后端技术 一.前言 分布式环境下数据库的读写分离策略是解决数据库读写性能瓶颈的一个关键解决方案 ...
- 高精度减法用string 和 stack
#include "bits/stdc++.h" using namespace std; int main() { string a,b; while(cin >> ...
- ReactJS环境搭建
1.ReactJs 需要依赖nodejs环境,如果没有安装nodejs的话,需要安装.下载地址:https://nodejs.org/en/download/ 下载下来之后,安装windows版本的m ...
- poj 1163 The Triangle 搜索 难度:0
The Triangle Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 37931 Accepted: 22779 De ...
- bzoj1002
题解: f[i]=(f[i-1]*3+f[i-2]); 高精度计算 代码: #include<bits/stdc++.h> using namespace std; struct big ...
- 使用Messenger 从Activity发送数据到service 通过后台计算结果Log输出;
package com.lixu.messenger; import android.app.Activity; import android.app.Service; import android. ...