【数学】全排列


题目描述 Description

在n×n格的棋盘上放置彼此不受攻击的n个皇后。按照国际象棋的规则,皇后可以攻击与之处在同一行或同一列或同一斜线上的棋子。n后问题等价于再n×n的棋盘上放置n个皇后,任何2个皇后不妨在同一行或同一列或同一斜线上。

输入描述 Input Description

 给定棋盘的大小n (n ≤ 13)

输出描述 Output Description

 输出整数表示有多少种放置方法。

样例输入 Sample Input

8

样例输出 Sample Output

92

#include <bits/stdc++.h>
#define ll long long
using namespace std;
int n;
int main()
{
    int a[20005];
    int n;
    scanf("%d",&n);
    for(int i=0;i<n;i++)
    {
        a[i]=i+1;
    }
    int *b=unique(a,a+n);
    do
    {
        for(int i=0;i<b-a;i++)
        {
            printf("%d ",a[i]);
        }
        printf("
");
    }while(next_permutation(a,b));
    return 0;
}
原文地址:https://www.cnblogs.com/Diliiiii/p/9886092.html