用C++(或C)语言 写个简单的程序 与象棋有关

这是题目Description棋盘上A点有一个过河卒,需要走到目标B点。卒行走的规则:可以向下、或者向右。同时在棋盘上C点有一个对方的马,该马所在的点和所有跳跃一步可达的... 这是题目Description

棋盘上A点有一个过河卒,需要走到目标B点。卒行走的规则:可以向下、或者向右。
同时在棋盘上C点有一个对方的马,该马所在的点和所有跳跃一步可达的点称为对方马的控制点。
棋盘用坐标表示,A点(0,0)、B点(n, m) (n,m为不超过20的整数),同样马的位置坐标是需要给出的。现在要求你计算出卒从A点能够到达B点的路径的条数,注意过河卒不能进入对方马的控制点

Input

一行,4个整数n,m,x,y(m,n<=20),(x,y)表示马的坐标

Output

一行整数,为卒从A点能够到达B点的路径的条数

Sample Input

5 6 2 3

Sample Output

3
我的程序如下
#include<iostream>
using namespace std;
int n,m,num=0;
int horsectr(int xnow,int ynow,int x,int y)
{
if(((xnow==x+2)||(xnow==x-2))&&((ynow==y+1)||(ynow==y-1))||
((ynow==y+2)||(ynow==y-2))&&((xnow==x+1)||(xnow==x-1))||
((xnow==x)&&(ynow==y))) //??????????????????????????????
{
return 1;
}
return 0;
}
void find(int xx,int yy,int x,int y)
{
if((xx==n)&&(yy==m))
{
num++;
return ;//??????????????????????
}
if(horsectr(xx,yy,x,y))
{
return ; //????????????????????????????????????
}
if((xx>n)||(yy>m))
{
return ; //????????????????
}
find(xx+1,yy,x,y); //??????
find(xx,yy+1,x,y); //??????
}
int main()
{
int x,y;
cin>>n>>m>>x>>y;
find(0,0,x,y);
cout<<num<<endl;
return 0;
}

超时了(要求1000MS以内)...
请帮我写个符合要求的程序,并指出我的错误,谢谢
展开
 我来答
yilinshop
2007-12-01 · TA获得超过787个赞
知道小有建树答主
回答量:464
采纳率:0%
帮助的人:332万
展开全部
建议你到www.csdn.net去提问 效果会好些
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式