NC235813. N皇后问题
描述
输入描述
一行,一个整数,表示棋盘的大小。
输出描述
输出一行一个整数,表示总共有多少种摆放皇后的方案,使得它们两两不能互相攻击。
示例1
输入:
4
输出:
2
C 解法, 执行用时: 33ms, 内存消耗: 384K, 提交时间: 2022-11-30 22:08:07
#include <stdio.h> #include <math.h> int a[12],n,sum=0; int f1(int k) { int i; for(i=1;i<k;i++) {if(abs(k-i)==abs(a[k]-a[i])||a[k]==a[i]) return 0; } return 1; } int f2(int k) { int i; if(k>n) sum++; else for(i=1;i<=n;i++) {a[k]=i; if(f1(k)) f2(k+1);} return sum; } int main(void) { scanf("%d",&n); printf("%d\n",f2(1)); return 0; }
C++(g++ 7.5.0) 解法, 执行用时: 2ms, 内存消耗: 492K, 提交时间: 2023-02-03 12:20:39
#include <bits/stdc++.h> using namespace std; int a[]={0,1,0,0,2,10,4,40,92,352,724,2680,14200}; int main(){ int n;cin>>n; cout<<a[n]; } //xxx
C++(clang++ 11.0.1) 解法, 执行用时: 3ms, 内存消耗: 440K, 提交时间: 2022-09-02 22:52:40
#include <bits/stdc++.h> using namespace std; int a[]={0,1,0,0,2,10,4,40,92,352,724,2680,14200}; int main(){ int n;cin>>n; cout<<a[n]; }