【C++】三角形(triangle)
•
数据库
题目描述
小魏有 3*n 根颜色两两不同的木棍,第i根的长度为a[i]。
小魏想把这3*n根木棍分成n组,每组三根,并且同一组的三根木棍可以组成一个三角形。
小魏想知道他有多少种不同的分组方案。认为两个分组方案是不同的,当且仅当两种方案组出来的三角形是不同的。
输入
第一行一个整数n。
第二行n个整数a[i]。
输出
一行一个整数,表示方案数。
#include
#include
using namespace std;
int n, a[30], b[30];
int mx;
void dfs(int x)
{
if (b[x])
{
dfs(x + 1);
return;
}
if (x == n + 1)
{
mx++;
return;
}
for (int i = x + 1; i <= n; i++)
{
if (b[i] == 0)
{
for (int j = i + 1; j a[j])
{
b[x] = b[i] = b[j] = 1;
dfs(x + 1);
b[x] = b[i] = b[j] = 0;
}
}
}
}
}
}
int main()
{
scanf("%d", &n);
n *= 3;
for (int i = 1; i <= n; i++) scanf("%d", &a[i]);
sort(a + 1, a + n + 1);
dfs(1);
printf("%d", mx);
return 0;
}
本文来自网络,不代表协通编程立场,如若转载,请注明出处:https://net2asp.com/638b774cfe.html
