Dili_iiii

编码全要靠底力

【数学】全排列


题目描述 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("\n");
    }while(next_permutation(a,b));
    return 0;
}

 

posted @ 2018-10-31 21:38  Dili_iiii  阅读(189)  评论(0编辑  收藏  举报