找不出哪错了,样例过不了
查看原帖
找不出哪错了,样例过不了
586768
User586768楼主2023/7/25 19:18
#include <bits/stdc++.h>
using namespace std;
int n,cnt=0,vis[40][40];
bool ji(int x,int y){
	bool f=true;
	for(int i=0;i<n;i++){
		for(int j=0;j<n;j++){
			if(abs(j-i)==(x-y)||j+i==x+y){
				f=false;
			}
		}
	}
	return f;
}
bool check(int x,int y){
	return vis[y-1][x]!=1&&ji(x,y);
}
void dfs(int x,int y){
	if(y==n){
		if(cnt<3){
			for(int i=0;i<n;i++){
				for(int j=0;j<n;j++){
					if(vis[i][j]==1){
						cout<<x<<' ';
					}
				}
				cout<<endl;
			}
		}
		cnt++;
	}
	for(int i=0;i<n;i++){
		if(check(i+1,y)){
			vis[y][i]=1;
			dfs(i+1,y+1);
			vis[y][i]=0;
		}
	}
}
int main(){
	cin>>n;
	dfs(0,0);
	cout<<cnt;
	return 0;
}
2023/7/25 19:18
加载中...