社区讨论

求助!!样例:13 没过

P1219[USACO1.5] 八皇后 Checker Challenge参与者 1已保存回复 0

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
0 条
当前快照
1 份
快照标识符
@luwdz5t1
此快照首次捕获于
2024/04/12 16:08
2 年前
此快照最后确认于
2024/04/12 18:59
2 年前
查看原帖
C
#include<stdio.h>
char a[20][20] = {0};
int l[20] = {0};//列
int p[20] = {0};//撇
int q[20] = {0};//捺
int n, k=0;

void dfs(int h) {
	int i,j;
	if(h == n) {
		k ++;
		for(i=0;i<n;i++) {
			for(j=0;j<n;j++)
			if(a[i][j] == 'Q' && k < 4) {
				printf("%d ",j+1);
			}
		}
		if(k<4)
		printf("\n");
		return;
	}
	for(i = 0;i < n;i ++) {
		if(!l[i] && !p[i+h] && !q[i-h+n]) {
			l[i] = p[i+h] = q[i-h+n] = 1;
			a[h][i] = 'Q';
			dfs(1+h);
			l[i] = p[i+h] = q[i-h+n] = 0;
			a[h][i] = '.';
		}
	}
}

int main(){
	int i, j;
	scanf("%d",&n);
	for(i = 0;i < n;i ++) {
		for(j = 0;j < n;j ++) {
			a[i][j] = '.';
		}
	}
	dfs(0);
	printf("%d",k);
	return 0;
}

回复

0 条回复,欢迎继续交流。

正在加载回复...