LQ0114 纸牌三角形枚举+置换

Posted 海岛Blog

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LQ0114 纸牌三角形枚举+置换相关的知识,希望对你有一定的参考价值。

题目来源:蓝桥杯2017初赛 Java B组H题

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

输出格式
输出一个整数表示答案

问题分析
用枚举法来解决。
三角形的三个边的全排列有3!=6种,abc,acb,bac,bca,cab,cba,所以需要除以6。

解题的C++语言程序如下:

/* LQ0114 纸牌三角形 */

#include <iostream>
#include <algorithm>

using namespace std;

int d[] = 1, 2, 3, 4, 5, 6, 7, 8, 9;

bool judge()

    int a = d[0] + d[1] + d[2] + d[3];
    int b = d[3] + d[4] + d[5] + d[6];
    if (a != b) return false;
    int c = d[6] + d[7] + d[8] + d[0];
    if (c != a) return false;
    return true;


int main()

    int cnt = 0;
    do 
        if (judge()) cnt++;
     while (next_permutation(d, d + 9));
    
    cout << cnt / 6 << endl;
    
    return 0;

以上是关于LQ0114 纸牌三角形枚举+置换的主要内容,如果未能解决你的问题,请参考以下文章

LQ0106 方格填数枚举

LQ0210 六角填数枚举

LQ0107 剪邮票置换+DFS

第八届蓝桥杯第二题

LQ0149 排序枚举

LQ0181 拉马车文本处理