您的位置:首页 > 其它

三角形问题

2016-01-26 23:55 218 查看
//题目:见计蒜课

#include <iostream>

#include <cstdio>

#include <cstring>

using namespace std;

int n,l[15];

bool h[10000];

bool is_triangle(int a,int b,int c){

   return !h[a*100+b]&&a&&b&&c&&a+b>c&&a+c>b&&b+c>a&&(h[a*100+b]=true); 

}

int dfs(int index,int a,int b,int c){

    if(index==n){

        return a<b&&b<c&&is_triangle(a,b,c);

    }

    return dfs(index+1,a+l[index],b,c)

        +dfs(index+1,a,b+l[index],c)

        +dfs(index+1,a,b,c+l[index]);

}

int main(){

    int T;

    scanf("%d",&T);

    while(T--){

        scanf("%d",&n);

        for(int i=0;i<n;++i){

            scanf("%d",&l[i]);

        }

         memset(h,0,sizeof(h));

         printf("%d\n",dfs(0,0,0,0));

    }

    return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: