[蓝桥杯2017初赛]纸牌三角形

题目描述

A,2,3,4,5,6,7,8,9 共9张纸牌排成一个正三角形(A按1计算)。要求每个边的和相等。
下图就是一种排法这样的排法可能会有很多。
如果考虑旋转、镜像后相同的算同一种,一共有多少种不同的排法呢?

输出

输出一个整数表示答案

答案:144

注意可以镜像和翻转

#include<iostream>
#include<string>
#include<algorithm>
#include<math.h>
#include<string.h>
#include<map>
#include<stack>
#include<queue>
#define ll long long
using namespace  std;
int vis[10];
map<ll,int>mp;
int main()
{
    int a[9]={1,2,3,4,5,6,7,8,9};
    int cnt=0;
    do
    {
        int x1=a[0]+a[1]+a[2]+a[3];
        int x2=a[3]+a[4]+a[5]+a[6];
        int x3=a[6]+a[7]+a[8]+a[0];
        if(x1==x2&&x2==x3)
            cnt++;
    }while(next_permutation(a,a+9));
    cout<<cnt/3/2<<endl;//翻转除以3,镜像除以2
    return 0;
}

猜你喜欢

转载自www.cnblogs.com/-citywall123/p/12345837.html