找不同 玄关
  • 板块灌水区
  • 楼主__sunhy2012__
  • 当前回复12
  • 已保存回复12
  • 发布时间2025/1/1 15:11
  • 上次更新2025/1/1 19:55:21
查看原帖
找不同 玄关
862592
__sunhy2012__楼主2025/1/1 15:11

AC:

#include<bits/stdc++.h>
using namespace std;
long long a[50][50],b[50][50]; //b[i][j]表示从(0,0)到(i,j)的方案数
//a[i][j]表示马的阻挡点,
long long bx,by ,mx,my;
int main(){
	cin>>bx>>by>>mx>>my;
	a[mx][my]=1;
	if(mx-2>=0&&my-1>=0) a[mx-2][my-1]=1;
	if(mx-2>=0)	a[mx-2][my+1]=1;
	if(mx-1>=0)	a[mx-1][my+2]=1;
	a[mx+1][my+2]=1;
	a[mx+2][my+1]=1;
	if(my-1>=0)	a[mx+2][my-1]=1;
	if(my-2>=0)	a[mx+1][my-2]=1;
	if(mx-1>=0&&my-2>=0) a[mx-1][my-2]=1;
	b[0][0]=1;
	for(int i=0;i<=bx;i++)
		for(int j=0;j<=by;j++){
			if(i==0&&j==0) continue;
			if(i==0) b[i][j]=(a[i][j]==1?0:b[i][j-1]);
			if(j==0) b[i][j]=(a[i][j]==1?0:b[i-1][j]);
			b[i][j]=(a[i][j]==1?0:b[i][j-1]+b[i-1][j]);
		}
	cout<<b[bx][by];
	return 0;
}

WA:

#include<bits/stdc++.h>
using namespace std;
long long a[50][50],b[50][50]; //b[i][j]表示从(0,0)到(i,j)的方案数
//a[i][j]表示马的阻挡点,
long long bx,by ,mx,my;
int main(){
	cin>>bx>>by>>mx>>my;
	a[mx][my]=1;
	if(mx-2>=0&&my-1>=0) a[mx-2][my-1]=1;
	if(mx-2>=0)	a[mx-2][my+1]=1;
	if(mx-1>=0)	a[mx-1][my+2]=1;
	a[mx+1][my+2]=1;
	a[mx+2][my+1]=1;
	if(my-1>=0)	a[mx+2][my-1]=1;
	if(my-2>=0)	a[mx+1][my-2]=1;
	if(mx-1>=0&&my-2>=0) a[mx-1][my-2]=1;
	b[0][0]=1;
	for(int i=0;i<=bx;i++)
		for(int j=0;j<=by;j++){
			if(i==0&&j==0) continue;
			if(i==0) b[i][j]=(a[i][j]==1?0:b[i][j-1]);
			if(j==0) b[i][j]=(a[i][j]==1?0:b[i-1][j]);
			b[i][j]=(a[i][j]==1?0:b[i][j-1]+b[i-1][j]);
		}
	cout<<b[bx][by];
	return 0;
}
2025/1/1 15:11
加载中...