[60]求助
查看原帖
[60]求助
963476
ms_xg_mx楼主2024/6/29 07:49
#include<bits/stdc++.h>
//#include<windows.h>
using namespace std;
int main(){
	int x1,y1,x2,y2;
	cin>>x2>>y2>>x1>>y1;
	int av[2][9] = {{x1,x1+2,x1+1,x1-1,x1-2,x1-2,x1-1,x1+1,x1+2},{y1,y1+1,y1+2,y1+2,y1+1,y1-1,y1-2,y1-2,y1-1}};
	int map[x2+1][y2+1]={0};
	for(int i=0;i<=y2;i++){
		map[0][i]=0;
	}
	map[0][0]=1;
	for(int i=0;i<=x2+y2;i++){
		for(int j=0;j<=x2;j++){
			int x=j;
			int y=i-j;
			if((x!=0||y!=0)&&(x>=0&&y>=0)&&(x<=x2&&y<=y2)){
				if(x>0) map[x][y]+=map[x-1][y];
				if(y>0) map[x][y]+=map[x][y-1];
				for(int a=0;a<9;a++){
					if(x==av[0][a]&&y==av[1][a]) map[x][y]=0;
				}
			}
			/*
			cout<<y<<" "<<x<<endl;
			for(int a=0;a<=x2;a++){
				for(int b=0;b<=y2;b++){
					cout<<map[a][b]<<" ";
				}
				cout<<endl;
			}
			system("pause");
			*/
		}
	}
	cout<<map[x2][y2];
	return 0;
}

想法:

map[0][0]=1(从0,0走到0,0有一种方法)

map[x][y]=map[x-1][y]+map[x][y-1](从0,0走到 x,y有x-1,y的走法 + x,y-1的走法 种走法)

如果map[x][y]为马的控制点或马则将map[x][y]设为0

1111111
12马1马12
1马011马2
111马113
1马112马3
11马1马03
1223336

不知道为什么会wa

2024/6/29 07:49
加载中...