锰锌钢靴OI霸王猴球条
查看原帖
锰锌钢靴OI霸王猴球条
486727
IaLWH楼主2024/8/9 11:06

rt,目前只打算输出解的总数

#include<cstdio>
#define xrr x+j*dx[i]
#define yrr y+j*dy[i]
int n;
const int dx[8]={0,1,1,1,0,-1,-1,-1},dy[8]={1,1,0,-1,-1,-1,0,1};
bool v[20][20];

int dfs(int x,int y){
	int ans=0;
	v[x][y]=1;
	for(int i=0;i<8;i++)
		for(int j=1;xrr>=0&&xrr<n&&yrr>=0&&yrr<n;j++)
			v[xrr][yrr]=1;
		
	for(int i=0;i<n;i++){
		if(x+2>n)return 1;
		if(v[x+1][i])continue;
		ans+=dfs(x+1,i);
	}
	v[x][y]=0;
	for(int i=0;i<8;i++)
		for(int j=1;xrr>=0&&xrr<n&&yrr>=0&&yrr<n;j++)
			v[xrr][yrr]=0;
	return ans;
}
int main(){
	int n,ans=0;
	scanf("%d",&n);
	for(int i=0;i<n;i++)
		ans+=dfs(0,i);
	printf("%d",ans);
	return 0;
}
2024/8/9 11:06
加载中...