USACO ORZ----HDU_4277----DFS+STL+枚举
来源:互联网 发布:华夏网络徐兴东 编辑:程序博客网 时间:2024/06/08 05:42
题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=4277
/*Author:Bob Lee2012.9.15==================================================题目的意思是给你n个木棍,问你可以组成多少个不同的三角形最多15根解题思路就是DFS枚举把所有可能的情况枚举出来难点就是判重的问题,这里用到了STL中的set容器对于每一种情况,边的大小按顺序排列然后有一个公式得到一个具体的值如果没有重复的话,就是一种情况,加入到set里面这里要注意我们自己写把三个排列的代码自己开始偷懒用sort,果断TLE了看来STL还是很有用的。*/#include<iostream>#include<cstdio>#include<set>#include<algorithm>using namespace std;#define MAXN 16set<long long> myset;int n;int data[MAXN];int m;int sum;void dfs(int num,int x1,int x2,int x3){ if(num > n) return; if(x1+x2 > x3 && x2+x3 > x1 && x3+x1 > x2) { int a[3]; a[0] = x1; a[1] = x2; a[2] = x3; if(a[0] > a[1]) swap(a[0],a[1]); if(a[0] > a[2]) swap(a[0],a[2]); if(a[1] > a[2]) swap(a[1],a[2]); long long hash = a[0]+a[1]*sum+a[2]*sum*sum; if(myset.find(hash) == myset.end()) { m++; myset.insert(hash); } } if(x3-data[num]+x2>x1+data[num]) dfs(num+1,x1+data[num],x2,x3-data[num]); if(x3-data[num]+x1>x2+data[num]) dfs(num+1,x1,x2+data[num],x3-data[num]); dfs(num+1,x1,x2,x3);}int main(){ int t; scanf("%d",&t); while(t--) { scanf("%d",&n); m=0; sum = 0; myset.clear(); int i; for(i=1;i<=n;i++) { scanf("%d",&data[i]); sum+=data[i]; } dfs(1,0,0,sum); printf("%d\n",m); } return 0;}
- USACO ORZ----HDU_4277----DFS+STL+枚举
- 【DFS】 hdu4277 USACO ORZ
- 【DFS】hdu 4277 USACO ORZ
- hdoj 4277 USACO ORZ 【DFS】
- HDU 4277 USACO ORZ DFS
- hdu 4277 USACO ORZ DFS
- HDU 4277 USACO ORZ (dfs + hash)
- hdu 4277 USACO ORZ (dfs+hash)
- hdu4277 USACO ORZ(dfs+set判重)
- USACO ORZ(DFS+set去重)
- hdoj--4277--USACO ORZ(dfs+剪枝)
- HDOJ 4277 USACO ORZ DFS+剪枝
- USACO ORZ(dfs爆搜+判重)
- hdu4277USACO ORZ dfs暴力枚举+map
- USACO ORZ
- HDU 4277 USACO ORZ(暴力+双向枚举)
- HDOJ 4277 USACO ORZ(set判重+dfs)
- hdu 4277 USACO ORZ (dfs暴搜+hash)
- 开发新浪微博应用时40070-limited application access api
- 【java实例】自己写的mysql数据库管理系统————MANAGER_FOR_MYSQL-1.0
- Lucene小练十四(文件排序)
- 黑马程序员_交通灯管理
- zend框架网站设计—新手篇(lamp+mvc+zendframework)
- USACO ORZ----HDU_4277----DFS+STL+枚举
- 学习笔记
- 网络流最大流的sap()算法
- 【数据结构】快速排序
- uva 357 - Let Me Count The Ways
- 网络游戏demo开发实例:多人在线RPG游戏(MMO RPG)demo的开发记录(第11篇)
- 算法时间复杂度的计算
- Flex中实现带有时间轴的直方图
- C++中字符型变量的地址输出