老师的代码过不了,我们也找不出错()
查看原帖
老师的代码过不了,我们也找不出错()
372336
一个句号楼主2023/1/17 15:43
//一本通 递推
//例3.6 过河卒
  
#include<cmath>
#include<cstdlib>
#include<cstdio>
#include<iostream>
using namespace std;
typedef long long ll;
ll p[30][30]; //棋盘 
ll f[30][30]; //存储路径方案 
//马的方向数组 (8个方向)
int dx[]={1,1,-1,-1,2,2,-2-2}; 
int dy[]={2,-2,2,-2,1,-1,1,-1}; 
int n,m;//B点坐标 
int xc,yc; //C点坐标 

int main(){
	cin>>n>>m>>xc>>yc;
	//棋盘下移2,右移2;A点坐标为(2,2) 
	n+=2; m+=2;    //B点 
	xc+=2;yc+=2;  //C点
	//棋盘边界赋值
	for(int i=2;i<=30;i++){
		f[2][i]=1; //上边界 
		f[i][2]=1; //左边界 
	} 
	//马控范围赋值
	for(int i=0;i<8;i++)
		p[xc+dx[i]][yc+dy[i]]=1;  
	
	//递推
	f[1][2]=1;//考虑 A点 
	for(int i=2;i<=n;i++)
		for(int j=2;j<=m;j++){
			if(p[i][j]==1){
				f[i][j]=0;
				continue;
			}
			f[i][j]=f[i-1][j]+f[i][j-1];
		} 
	//输出
	cout<<f[n][m]<<endl ;
	return 0;
}

2023/1/17 15:43
加载中...