最后一个点tle,刚刚接触编程的小白
查看原帖
最后一个点tle,刚刚接触编程的小白
787834
QUYI楼主2022/11/8 11:12
#include<stdio.h>
int n,sum=0,a[17],x[17][17];
void queen(int step) {
	if(step==0) {
		sum++;
		if(sum<4) {
			for(int i=0; i<n; i++) {
				printf("%d ",a[i]);
			}
			printf("\n");
		}
		return ;
	}
	for(int i=0; i<n; i++) {
		if(x[n-step][i]==0) {
			int flag1=0;
			for(int j=0; j<n-step; j++) {
				if(x[j][i]==1) {
					flag1++;
				}
			}
			for(int j=0; j<n; j++) {
				int y=n-step-j,x1=i+j,x2=i-j;
				if(y>=0&&x1<n&&x[y][x1]==1) {
					flag1++;
				}
				if(y>=0&&x2>=0&&x[y][x2]==1) {
					flag1++;
				}
			}
			if(flag1==0) {
				x[n-step][i]=1;
				a[n-step]=i+1;
				queen(step-1);
				x[n-step][i]=0;
			}
		}
	}
}
int main() {
	scanf("%d",&n);
	for(int i=0; i<n; i++) {
		for(int j=0; j<n; j++) {
			x[i][j]=0;
		}
	}
	queen(n);
	printf("%d",sum);
	return 0;
}
2022/11/8 11:12
加载中...