递推思想 系列二
来源:互联网 发布:airlaunch 蜂窝数据 编辑:程序博客网 时间:2024/05/09 01:44
马拦过河卒
Problem Description
棋盘上A点有一个过河卒,需要走到目标B点。卒行走的规则:可以向下、或者向右。同时在棋盘上C点有一个对方的马,该马所在的点和所有跳跃一步可达的点称为对方马的控制点。因此称之为“马拦过河卒”。棋盘用坐标表示,A点(0,0)、B点(n,m)(n,m为不超过15的整数),同样马的位置坐标是需要给出的。现在要求你计算出卒从A点能够到达B点的路径的条数,假设马的位置是固定不动的,并不是卒走一步马走一步。
Input
一行四个数据,用空格分隔,分别表示B点的坐标和马的坐标。
Output
一个数据,表示所有的路径条数。
Example Input
6 6 3 3
Example Output
6
~~~~~~~!!!
递推思想: 所在位置的路径等于左边一格的路径加上上边一格的路径。
#include<stdio.h>
int main()
{
int n, m, x, y, i, j;
int g[20][20] = {0};
int f[20][20] = {0};
int x1[9] = {0,1,2,-2,-1,-1,-2,2,1};
int y1[9] = {0,2,1,1,2,-2,-1,-1,-2};
scanf("%d %d %d %d", &n, &m, &x, &y);/*x 对应i, y 对应 j*/
g[x][y] = 1;/*马所在点*/
for(i = 0; i < 9; i++)/*马所到的点*/
{
if(x1[i] + x >= 0 && x1[i] + x <= n && y1[i] + y >= 0 && y1[i] + y <= m)
g[x1[i] + x][y1[i] + y] = 1;
}
for(i = 1; i <= n; i++)/*坐标原点纵向处理*/
{
if(g[i][0] != 1)
f[i][0] = 1;
else
{
for(; i <= n; i++)
f[i][0] = 0;
}
}
for(j = 1; j <= m; j++)/*坐标原点横向处理*/
{
if(g[0][j] != 1)
f[0][j] = 1;
else
{
for(; j <= m; j++)
f[0][j] = 0;
}
}
for(i = 1; i <= n; i++)
{
for(j = 1; j <= m; j++)
{
if(g[i][j] == 1)
f[i][j] = 0;
else
f[i][j] = f[i][j - 1] + f[i - 1][j];
}
}
printf("%d\n", f[n][m]);
return 0;
}
int main()
{
int n, m, x, y, i, j;
int g[20][20] = {0};
int f[20][20] = {0};
int x1[9] = {0,1,2,-2,-1,-1,-2,2,1};
int y1[9] = {0,2,1,1,2,-2,-1,-1,-2};
scanf("%d %d %d %d", &n, &m, &x, &y);/*x 对应i, y 对应 j*/
g[x][y] = 1;/*马所在点*/
for(i = 0; i < 9; i++)/*马所到的点*/
{
if(x1[i] + x >= 0 && x1[i] + x <= n && y1[i] + y >= 0 && y1[i] + y <= m)
g[x1[i] + x][y1[i] + y] = 1;
}
for(i = 1; i <= n; i++)/*坐标原点纵向处理*/
{
if(g[i][0] != 1)
f[i][0] = 1;
else
{
for(; i <= n; i++)
f[i][0] = 0;
}
}
for(j = 1; j <= m; j++)/*坐标原点横向处理*/
{
if(g[0][j] != 1)
f[0][j] = 1;
else
{
for(; j <= m; j++)
f[0][j] = 0;
}
}
for(i = 1; i <= n; i++)
{
for(j = 1; j <= m; j++)
{
if(g[i][j] == 1)
f[i][j] = 0;
else
f[i][j] = f[i][j - 1] + f[i - 1][j];
}
}
printf("%d\n", f[n][m]);
return 0;
}
0 0
- 递推思想 系列二
- 递推思想 系列一
- 2042 不容易系列之二【递推】
- 八大算法思想(二)------------------递推算法
- 递推思想
- 递归,递推思想
- 递推思想
- 递推思想
- poj2663递推思想
- 递推算法思想
- 常用算法思想之:递推思想
- 第一篇 递推思想
- 算法之递推思想
- HDU 2042 不容易系列之二【简单递推】
- HDU 2042--不容易系列之二【递推】
- 2042不容易系列之二(从后往前递推)
- 算法洗脑系列(8篇)——第一篇 递推思想
- 算法洗脑系列(8篇)——第一篇 递推思想
- Spark
- 数组小总结
- JFileChooser 返回地址
- Android NDK系列(4) — SO中调用Java方法
- Z80 CPU中的主要指令
- 递推思想 系列二
- IoC实践--用Autofac实现MVC5.0的IoC控制反转方法
- 腾讯云COS(云对象存储服务)实现个人FTP服务器的搭建
- System.ArgumentOutOfRangeException: 容量超出了最大容量
- Spring
- Python之HelloWorld
- windows10 下 使用docker php-fpm 镜像 xdebug调试
- Android API Guide for Animation and Graphics(二)—— 动画与图形(属性动画)
- 关于CocoaPod的遇到的一些问题解决方法