UVa 825 - Walking on the Safe Side
题目:在一个N*M的网格中,从左上角走到右下角,有一些点不能经过,求最短路的条数。
分析:dp,帕斯卡三角。每一个点最短的就是走N条向下,M条向右的路。
到达每一个点的路径条数为左边和上面的路径之和。
说明:注意数据输入格式。
#include <iostream>
#include <cstdlib>
#include <cstring>
#include <cstdio> using namespace std; int smap[101][101];
int sums[101][101]; int temp[101];
int getnumber(int tem[], char str[])
{
int move = 0,save = 0;
while (str[move]) {
while (str[move] < '0' || str[move] > '9') {
if (!str[move]) return save;
move ++;
}
int value = 0;
while (str[move] >= '0' && str[move] <= '9') {
value *= 10;
value += str[move ++]-'0';
}
tem[save ++] = value;
}
return save;
} int main()
{
int T,N,M;
char buf[1001];
scanf("%d",&T);getchar();
while (T --) { scanf("%d%d",&N,&M);getchar();
memset(smap, 0, sizeof(smap));
memset(sums, 0, sizeof(sums)); for (int i = 1 ; i <= N ; ++ i) {
gets(buf);
int count = getnumber(temp, buf);
for (int i = 1 ; i < count ; ++ i)
smap[temp[0]][temp[i]] = 1;
} sums[1][1] = 1;
for (int i = 2 ; i <= N && !smap[i][1] ; ++ i)
sums[i][1] = 1;
for (int i = 2 ; i <= M && !smap[1][i] ; ++ i)
sums[1][i] = 1;
for (int i = 2 ; i <= N ; ++ i)
for (int j = 2 ; j <= M ; ++ j) {
sums[i][j] = sums[i-1][j]+sums[i][j-1];
if (smap[i][j]) sums[i][j] = 0;
} printf("%d\n",sums[N][M]);
if (T) printf("\n");
}
return 0;
}
UVa 825 - Walking on the Safe Side的更多相关文章
- uva 825 - Walking on the Safe Side(dp)
题目链接:825 - Walking on the Safe Side 题目大意:给出n,m,现在给出n行数据, 每行有k(k为不定值)个数字, 第一个数字代表行数, 后面k - 1个数代表当前行的这 ...
- UVA 825 Walking on the Safe Side(记忆化搜索)
Walking on the Safe Side Square City is a very easy place for people to walk around. The two-way ...
- UVA 825 Walkiing on the safe side
根据地图,要求固定两点间最短路径的条数 . 这题的输入数据就是个坑,题目有没有说明数据之间有多个空格,结尾换行符之前也不止一个空格,WA了好几遍,以后这种情况看来都要默认按照多空格的情况处理了. 可以 ...
- UVa 825【简单dp,递推】
UVa 825 题意:给定一个网格图(街道图),其中有一些交叉路口点不能走.问从西北角走到东南角最短走法有多少种.(好像没看到给数据范围...) 简单的递推吧,当然也就是最简单的动归了.显然最短路长度 ...
- uva 825
这个......小学生就会的 坑在输入输出了 两个数之间可能不止一个空格....wa了好几遍啊 #include <cstdio> #include <cstring> # ...
- UVA题目分类
题目 Volume 0. Getting Started 开始10055 - Hashmat the Brave Warrior 10071 - Back to High School Physics ...
- 算法入门经典大赛 Dynamic Programming
111 - History Grading LCS 103 - Stacking Boxes 最多能叠多少个box DAG最长路 10405 - Longest Common Subsequence ...
- UVA - 825Walking on the Safe Side(dp)
id=19217">称号: UVA - 825Walking on the Safe Side(dp) 题目大意:给出一个n * m的矩阵.起点是1 * 1,终点是n * m.这个矩阵 ...
- 紫书 习题 8-25 UVa 11175 (结论证明)(配图)
看了这篇博客https://blog.csdn.net/u013520118/article/details/48032599 但是这篇里面没有写结论的证明, 我来证明一下. 首先结论是对于E图而言, ...
随机推荐
- GotGitHub — GotGitHub
GotGitHub - GotGitHub GotGitHub
- Mybatis自己主动生成代码
在mybatis自己主动生成代码有两种方式: 方式一:是通过使用eclipse作为开发工具.採用maven来构建项目生成的.以下的演示是通过第一种方式. 今天来记录下mybatis-generator ...
- 用Python对体积较大的CSV文件进行比较的经验
用Python对体积较大的CSV文件进行比较的经验 » 进化的测试 | 进化的测试 用Python对体积较大的CSV文件进行比较的经验 python Add comments 八 032010 ...
- 用gradle管理android项目出现的问题以及解决方法
1.项目结构 最好是全部在root 项目配置 一个settings.gradle 一个build.gradle 2.多项目依赖 http://www.gradle.org/docs/current/u ...
- STM32 + RT Thread OS 学习笔记[四]
1. 补注 a) 硬件,打通通讯通道 若学习者购买了学习板,通常可以在学习板提供的示例代码中找到LCD的相关驱动代码,基本上,这里的驱动的所有代码都可以从里面找到. 从上面的示意图可见,M ...
- Selenium 验证picklist是可被正确选中且是有序的(动态数组赋值)
原代码: <select id="edit-submitted-im-interesting-in" class="form-select required&quo ...
- loj1245(数学)
传送门:Harmonic Number (II) 题意:求sum=n/1+n/2+n/3+...+n/n.(n<2^31) 分析:在一定的区间内n/i的值是一定的,因此要跳过这段区间来加速求解. ...
- 部署、收回和删除解决方式----STSADM和PowerShell
部署.收回和删除解决方式----STSADM和PowerShell 由于近期总是要部署wsp解决方式,所以常常要用到命令行或者PowerShell.所以有必要将命令集中放在这里.在部署 ...
- .Net Core配置文件
.Net Core下如何管理配置文件 一.前言 根据该issues来看,System.Configuration在.net core中已经不存在了,那么取而代之的是由Microsoft.Extensi ...
- 可重入锁(good)
可重入锁,也叫做递归锁,是指在一个线程中可以多次获取同一把锁,比如:一个线程在执行一个带锁的方法,该方法中又调用了另一个需要相同锁的方法,则该线程可以直接执行调用的方法[即可重入],而无需重新获得锁: ...