厦门专业网站制作,餐饮网站开发,重庆旅游攻略,微网站好制作吗题目描述 小魏有 3*n 根颜色两两不同的木棍#xff0c;第i根的长度为a[i]。 小魏想把这3*n根木棍分成n组#xff0c;每组三根#xff0c;并且同一组的三根木棍可以组成一个三角形。 小魏想知道他有多少种不同的分组方案。认为两个分组方案是不同的,当且仅当两种方案组出来的… 题目描述 小魏有 3*n 根颜色两两不同的木棍第i根的长度为a[i]。 小魏想把这3*n根木棍分成n组每组三根并且同一组的三根木棍可以组成一个三角形。 小魏想知道他有多少种不同的分组方案。认为两个分组方案是不同的,当且仅当两种方案组出来的三角形是不同的。 输入 第一行一个整数n。 第二行n个整数a[i]。 输出 一行一个整数表示方案数。 #include cstdio
#include algorithm
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 n; j){if (b[j] 0) {if (a[x] a[i] 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;
}