Hello,everybody!
我们又见面了,我是Aqin!
今天呢带来《过河卒》的代码(C++)
题目如下:
题目描述
如图,A点有一个过河卒,需要走到目标B点。卒行走规则:可以向下、或者向右。同时在棋盘上的任一点有一个对方的马(如图中的C点),该马所在的点和所有跳跃一步可达的点称为对方马的控制点。例如图中C 点上的马可以控制9个点(图中的P1,P2…P8 和C)。卒不能通过对方马的控制点。
棋盘用坐标表示,A点(0,0)、B点(n,m)(n,m 为不超过20的整数,并由键盘输入),同样马的位置坐标是需要给出的(约定:C<>A,同时C<>B)。现在要求你计算出卒从A点能够到达B点的路径的条数。
输入
只有一行四个整数n,m,x,y。
其中,(n,m)表示B点的坐标,(x,y)表示对方马的坐标。
输出
只有一行一个整数,表示路径的条数。
相信思路大家都会,这里简单地说一下:
先将边权赋值为1,进行双重循环,数组中每一个的值为上面的的值加左边的值,如果遇到吗能到的点就归0,然后继续做,最后输出第[n][m]个点的值就行了。
好啦,思路就是这样,下面上代码!!!
#include<iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>
/*
注意,注意,此处不能改为万能头文件!!!
因为我定义了map函数,而map是STL的一个关联容器,若使用万能头文件,会编译错误!!!
*/
using namespace std;
const int maxn = 25;
int map[maxn][maxn];
int n,m,x,y;
int dir[8][2] = {
{
-2,-1},{
-2,1}<