听灌多,捞一把
查看原帖
听灌多,捞一把
739307
All_Failed_OI_Cici楼主2024/7/23 21:34

原题链接
代码奉上:

#include<bits/stdc++.h>
using namespace std;
int x,y,m,n;
int dx[8]={-1,-1,1,1,-2,-2,2,2};
int dy[8]={-2,2,-2,2,-1,1,-1,1};
const int N=30;
long long cnt=0;
bool b[N][N];
void dfs(int x_,int y_){
	if(!b[x_][y_]) return;
	if(x_==x&&y_==y){
		cnt++;
		return;
	}
	if(x_+1<=x) dfs(x_+1,y_);
	if(y_+1<=y) dfs(x_,y_+1);
}
int main(){
	memset(b,true,sizeof(b));
	cin>>x>>y>>m>>n;
	b[m][n]=false;
	for(int i=0;i<8;i++){
		int tx=m+dx[i];
		int ty=n+dy[i];
		if(tx>=0&&tx<=x&&ty>=0&&ty<=y) b[tx][ty]=false;
	}
	dfs(0,0);
	cout<<cnt;
	return 0;
}

1,2,5都AC\color{green}AC了,但3,4TLE\color{darkblue}TLE了。 一定要用dp吗?dfs是不是过不了(悲)
thx

2024/7/23 21:34
加载中...