60分求助
查看原帖
60分求助
681577
MoMoNJ楼主2024/7/18 10:55

1,5点错


#include<iostream>
#include<cstdio>
#include<bits/stdc++.h>
using namespace std;
#define int long long
bool a[1001][1001];
int dp[1001][1001];
int d[4][2]={{0,1},{1,0}};
int dh[8][2]={{1,2},{2,1},{-1,2},{-2,1},{-1,-2},{-2,-1},{1,-2},{2,-1}};
int n,m,cnt;
bool in(int x,int y){
	if(x>=0&&y>=0&&x<=n&&y<=m){
		return true;
	}
	return false;
}
void horse(int x,int y){
	a[x][y]=true;
	for(int i=0;i<8;i++){
		int dx=x+dh[i][0],
			dy=y+dh[i][1];
		if(in(dx,dy)){
			a[dx][dy]=true;
		}
	}
	return ;
}
signed main(){
	int x,y;
	cin>>n>>m>>x>>y;
	horse(x,y);
	dp[0][0]=1;
	if(a[n][m]==true||a[0][0]){
		cout<<0;
		return 0;
	}
	for(int i=0;i<=n;i++){
		for(int j=0;j<=m;j++){
			if(a[i][j]==false){
				if(in(i-1,j)){
					dp[i][j]+=dp[i-1][j];
				}
				if(in(j-1,i)){
					dp[i][j]+=dp[i][j-1];
				}
			}
			
		}
	}
	cout<<dp[n][m];
}

2024/7/18 10:55
加载中...