HDOJ 4277 USACO ORZ (搜索+剪枝)
题意:给n个正整数,代表n条边,现将n条边拼成一个三角形(每条边都要用到),问能组成多少个不同的三角形。

#include <stdio.h> #include <algorithm> #include <set> using namespace std; #define MP make_pair int l[15],n; int x[3]; struct pro { int ans,sum; set<pair<int,pair<int,int> > > Set; void init() { ans=sum=0; Set.clear(); scanf("%d",&n); for(int i=0;i<n;i++) { scanf("%d",&l[i]); sum+=l[i]; } } void dfs(int a,int b,int c,int k) { x[0]=a,x[1]=b,x[2]=c; sort(x,x+3); if(x[2]*2>=sum) return; if(Set.count(MP(x[0],MP(x[1],x[2])))) return; Set.insert(MP(x[0],MP(x[1],x[2]))); if(k==n) { ans++; return; } dfs(a+l[k],b,c,k+1); dfs(a,b+l[k],c,k+1); dfs(a,b,c+l[k],k+1); } void solve() { dfs(0,0,0,0); printf("%d\n",ans); } }p; int main() { int t; scanf("%d",&t); while(t--) { p.init(); p.solve(); } return 0; }
分类:
ACM题解
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 探秘 MySQL 索引底层原理,解锁数据库优化的关键密码(下)
· 大模型 Token 究竟是啥:图解大模型Token
· 35岁程序员的中年求职记:四次碰壁后的深度反思
· 继承的思维:从思维模式到架构设计的深度解析
· 如何在 .NET 中 使用 ANTLR4
· 2025,回顾出走的 10 年
· 【保姆级教程】windows 安装 docker 全流程
· 分享 3 款基于 .NET 开源且免费的远程桌面工具
· 基于Docker+DeepSeek+Dify :搭建企业级本地私有化知识库超详细教程
· 由 MCP 官方推出的 C# SDK,使 .NET 应用程序、服务和库能够快速实现与 MCP 客户端