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 纸牌三角形枚举+置换的主要内容,如果未能解决你的问题,请参考以下文章