hdu 4277 USACO ORZ (Dfs)

题意:

  给你n个数,要你用光所有数字组成一个三角形,问能组成多少种不同的三角形

时间分析:

  3^15左右

  

#include<stdio.h>
#include<set>
using namespace std;
set<long long>s;
int _case,n,sum;
int ai[];
int Dfs(int a,int b,int c,int m)
{
if(m==n)
{
if(a>b||b>c)
return ;
if(a&&b&&c&&a+b>c)
{
s.insert(a*sum*sum+b*sum+c);
}
return ;
}
Dfs(a+ai[m],b,c,m+);
Dfs(a,b+ai[m],c,m+);
Dfs(a,b,c+ai[m],m+);
}
int main()
{
scanf("%d",&_case);
while(_case--)
{
sum=;
s.clear();
scanf("%d",&n);
for(int i=;i<n;i++){
scanf("%d",&ai[i]);
sum+=ai[i];
}
Dfs(,,,);
printf("%d\n",s.size());
}
return ;
}
上一篇:yum 搭建lnmp环境详细步骤


下一篇:iOS 7 二维码的生成