hdu4277 DFS+SET

来源:互联网 发布:自助域名绑定如何实现 编辑:程序博客网 时间:2024/06/04 04:51
题意:
      给你一些木棍,问你可以组成多少个三角形..


思路:

     直接深搜,N很小深搜无压力,也可以直接算出来,但我不会算.. 


#include<stdio.h>#include<set>using namespace std;__int64 num[20];int n;set<__int64>st;void dfs(__int64 a ,__int64 b ,__int64 c ,int ii){    if(ii == n + 1)    {        if(a > b || a > c || b > c)         return ;        if(a && b && c && a + b > c)        {           __int64 now = a * 225000000000 + b * 150000 + c;           st.insert(now);              }        return ;     }     dfs(a + num[ii] ,b ,c ,ii + 1);     dfs(a ,b + num[ii] ,c ,ii + 1);     dfs(a ,b ,c + num[ii] ,ii + 1);     return ;}int main (){    int t ,i;    scanf("%d" ,&t);    while(t--)    {        scanf("%d" ,&n);        for(i = 1 ;i <= n ;i ++)        scanf("%I64d" ,&num[i]);        st.clear();        dfs(0, 0 ,0 ,1);        printf("%d\n" ,st.size());    }    return 0;}





0 0
原创粉丝点击