【C++】三角形(triangle)

题目描述

小魏有 3*n 根颜色两两不同的木棍,第i根的长度为ai。

小魏想把这3*n根木棍分成n组,每组三根,并且同一组的三根木棍可以组成一个三角形。

小魏想知道他有多少种不同的分组方案。认为两个分组方案是不同的,当且仅当两种方案组出来的三角形是不同的。

输入

第一行一个整数n。

第二行n个整数ai。

输出

一行一个整数,表示方案数。

cpp 复制代码
#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;
}
相关推荐
meiying883829 分钟前
快递单号批量查询Python脚本:从手动到自动化的完整实现
开发语言·python·自动化
@大迁世界1 小时前
告别 Go,拥抱 Rust
开发语言·golang·rust
SEO_juper1 小时前
Node.js 重定向链检测工具:301 跳了几跳、有没有成环,一次看清
xml·开发语言·python·node.js·json·bash
学逆向的1 小时前
C 指针常量与常量指针
c语言·开发语言·网络安全
低调滴开发2 小时前
3 行代码写崩一个函数?切片才是 Rust 字符串处理的正确姿势
开发语言·后端·rust
CodeYp20192 小时前
第15讲:二叉搜索树
开发语言·c++·二叉搜索树
猫猫.1532 小时前
HashTable、HashMap、ConcurrentHashMap 核心区别总结
java·开发语言·java-ee
pipixia200333 小时前
C++继承面试四连问:内存叠加、私有继承、sizeof、权限重映射
c++·面试·嵌入式·继承·面向对象·对象模型
乌暮4 小时前
综合案例:宠物电商系统
java·开发语言·spring·mvc·restful·1024程序员节
大文说跨境4 小时前
亚马逊多店铺的图片素材怎么批量去重:EXIF 与哈希的处理流程
开发语言·php