Time Limit: 1 second

Memory Limit: 128 MB

【问题描述】

一个N×N的网格,你一开始在(1, 1),即左上角。每次只能移动到下方相邻的格子或者右方相邻的格子,问到达(N, N),即右下角有多少种方法。 但是这个问题太简单了,所以现在有M个格子上有障碍,即不能走到这M个格子上。

【输入格式】

输入文件path.in的第1行包含两个非负整数N,M,表示了网格的边长与障碍数。 接下来M行,每行两个不大于N的正整数x, y。表示坐标(x, y)上有障碍不能通过,且有1≤x, y≤n,且x, y至少有一个大于1,并请注意障碍坐标有可能相同。

【输出格式】

输出文件path.out仅包含一个非负整数,为答案mod 100003后的结果。

【数据规模】

对于20%的数据,有N≤3; 对于40%的数据,有N≤100; 对于40%的数据,有M=0; 对于100%的数据,有N≤1000,M≤100000。

Sample Input1

3 1
3 1

Sample Output1

5

【题解】

这题和马拦过河卒那题很像。

但是这题更好做了。不用你处理出马控制的区域。直接告诉你哪些格子不能走了。

一开始和(1,1)在同一行和同一列的位置都置为1;遇到不能走的则停止置。

然后用递推公式

a[i][j] = (a[i-1][j]+a[i][j-1] )%100003递推即可。

【代码】

#include <cstdio>
#include <cstring> int n,m,a[1001][1001] = {0};
bool bo[1001][1001]; void input_data()
{
memset(bo,true,sizeof(bo));//一开始置所有的点都可以走
scanf("%d%d",&n,&m);
for (int i = 1;i <= m;i++) //输入m个不能走的点 并将其bo值置为false;
{
int x,y;
scanf("%d%d",&x,&y);
bo[x][y] = false;
}
for (int i = 1;i <= n;i++) //和(1,1)在同一行或同一列都只有一种到达方式。如果有不能走到的点
if (bo[1][i])//在这一行或一列上。它后面被挡住的点就无法到达了。
a[1][i] = 1;
else
break;
for (int i = 1;i <= n;i++)
if (bo[i][1])
a[i][1] = 1;
else
break;
} void get_ans() //根据过河卒的思路来递推答案即可。
{
for (int i = 2;i <= n;i++)
for (int j = 2;j <= n;j++)
if (bo[i][j])
a[i][j] = (a[i-1][j]+a[i][j-1]) % 100003; //要记住取模运算!
} void output_ans()
{
printf("%d\n",a[n][n]);
} int main()
{
input_data();
get_ans();
output_ans();
return 0;
}

最新文章

  1. 基于暗通道优先算法的去雾应用(Matlab/C++)
  2. JQ first-child与:first的区别以及nth-child(index)与eq(index)的区别
  3. Nodejs基础中间件
  4. shell crontab执行结果不同问题处理
  5. [Linux 性能检测工具]SAR
  6. Python之禅+八荣八耻
  7. C语言中如何将二维数组作为函数的参数传递
  8. 通过DDOS攻击流程图来浅谈如何预防Ddos攻击与防御
  9. SQL Server 数据库最小宕机迁移方案
  10. Effective C++(17) 以独立语句将newed对象置入智能指针
  11. MFC中创建自定义消息
  12. tomcat免安装版做成windows系统服务
  13. C#在Win10与非Win10 Windows系统鼠标滚动编程的一点区别。
  14. [No0000157].net core项目中拼音,excel,pdf处理库
  15. namespace关键字学习笔记
  16. My sql 自增 虚拟列。
  17. ResourceManager High Availability
  18. 有效二叉查找树判断(java实现)
  19. c# 三种取整方法 向上取整 向下取整 四舍五入
  20. visual studio 安装与sqlserver 安装

热门文章

  1. Markdown 常用语法学习(stackedit)
  2. mysql中bigint、int、mediumint、smallint与tinyint的取值范围
  3. 【JZOJ4861】【NOIP2016提高A组集训第7场11.4】推冰块
  4. nodeJs学习-15 mysql中间件下载与使用、基本用法
  5. ta-lib 里的蜡烛图形态函数源码
  6. inflate用一个XML源填充view. LayoutInflater
  7. 【NS2】用eclipse调试NS2(转载)
  8. js+canvas五子棋人机大战ai算法
  9. 同一个C语言工程不同C文件之间的函数互相调用问题
  10. @codeforces - 1205C@ Palindromic Paths