zoukankan      html  css  js  c++  java
  • HDU1518 Square

    #include<stdio.h>
    #include<string.h>
    #include<math.h>
    #include<stdlib.h>
    #define max(a, b)(a > b ? a : b)
    #define N 30
    
    int a[N], vis[N], n, k, f;
    
    void DFS(int s, int m, int d)//s为搜索起点 m为已组成的正方体的边数 d当前组成木棍的长度(正方体的一条边可由多个木棍组成)
    {
        int i;
        if(m == 4)
        {
            f = 1;
            return ;
        }
        if(d == k)
            DFS(0, m + 1, 0);
        for(i = s ; i < n ; i++)
        {
            if(!vis[i] && d + a[i] <= k)
            {
                vis[i] = 1;
                DFS(i + 1, m, d + a[i]);
                vis[i] = 0;
                if(f == 1)
                    return ;
            }
        }
    }
    int main()
    {
        int t, sum, max, i;
        scanf("%d", &t);
        while(t--)
        {
            sum = f = max = 0;
            scanf("%d", &n);
            for(i = 0 ; i < n ; i++)
            {
                scanf("%d", &a[i]);
                sum += a[i];
                max = max(max, a[i]);
            }
            if(sum % 4 != 0 || max > sum / 4 || n < 4)//正方体的边数为小数,长度最大的木棍大于正方体的边数。木棍总数小于4都不能组成正方体
                printf("no
    ");
            else
            {
                k = sum / 4;
                memset(vis, 0, sizeof(vis));
                DFS(0, 1, 0);
                if(f == 1)
                    printf("yes
    ");
                else
                    printf("no
    ");
            }
        }
        return 0;
    }
  • 相关阅读:
    MJExtension的使用
    Swift
    2月22号 UITableView
    1月25号 CALayer
    1月22号 animation—1
    1月22号 KVC KVO
    2016.01.22 简单动画
    2016.01.22 KVC&KVO
    2016.01.22 单例模式(Singleton)
    2016.01.21 UITabBarController
  • 原文地址:https://www.cnblogs.com/qq2424260747/p/4534140.html
Copyright © 2011-2022 走看看