cogs 49. 跳马问题

49. 跳马问题

★   输入文件:horse.in   输出文件:horse.out   简单对比
时间限制:1 s   内存限制:128 MB

【问题描述】

有一只中国象棋中的 “ 马 ” ,在半张棋盘的左上角出发,向右下角跳去。规定只许向右跳(可上,可下, 但不允许向左跳)。请编程求从起点 A(1,1) 到终点 B(m,n) 共有多少种不同跳法。

cogs 49. 跳马问题

 
 【输入格式】
 
    输入文件只有一行,两个整数m和n(1≤m,n≤20),两个数之间有一个空格。
 【输出格式】
 
    输出文件只有一个整数,即从 A 到 B 全部的走法。
 
 【输入输出样例】
 
   输入文件(horse.in)
   5 9
 
  输出文件(horse.out)
   37
思路:宽搜。
#include<queue>
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
int n,m,ans;
int vis[][];
struct nond{
int x,y;
};
queue<nond>que;
int dx[]={,-,,-};
int dy[]={,,,};
int main(){
freopen("horse.in","r",stdin);
freopen("horse.out","w",stdout);
scanf("%d%d",&n,&m);
nond be;
be.x=;be.y=;
que.push(be);
while(!que.empty()){
nond now=que.front();
que.pop();
for(int i=;i<;i++){
int cx=now.x+dx[i];
int cy=now.y+dy[i];
if(cx==n&&cy==m) ans++;
else if(cx>=&&cx<=n&&cy>=&&cy<=m){
nond cc;
cc.x=cx;
cc.y=cy;
que.push(cc);
}
}
}
printf("%d",ans);
}
上一篇:Linux 系统下使用dd命令备份还原MBR主引导记录


下一篇:Linux下dd和od命令备份查看硬盘mbr,并用vim修改!