标签:mon str 12px sum first number 题意 test cpp
3 4 1 1 1 1 5 10 20 30 40 50 8 1 7 2 6 4 4 3 5
yes no yes
一直都是TLE,,我是枚举了全部的正方形可能的长度,然后进行深搜。
。。
#include <cstdio> #include <cstring> #include <algorithm> using namespace std ; int d[30] , m , sum = 0; bool visited[30] ; bool DFS(int len , int c ,int pos) { if(c==4) { return true ; } if(sum == len) { if(DFS(0,c+1,0)) { return true ; } } else { for(int i = pos ; i < m ; ++i) { if(!visited[i]) { if(len+d[i]>sum) { return false; } visited[i] = true ; if(DFS(len+d[i],c,i+1)) { return true ; } visited[i] = false ; } } } return false ; } int main() { int n ; scanf("%d",&n); while(n--) { scanf("%d",&m); sum = 0 ; for(int i = 0 ; i < m ; ++i) { scanf("%d",&d[i]) ; sum += d[i] ; } if(m<4 || sum%4!=0) { puts("no") ; } else { sort(d,d+m) ; sum /= 4 ; if(sum<d[m-1]) { puts("no") ; continue ; } memset(visited,false,sizeof(visited)) ; if( DFS(0,0,0) ) { puts("yes") ; } else { puts("no") ; } } } return 0 ; }
hdu 1518 Square 深搜,,,,花样剪枝啊!!!
标签:mon str 12px sum first number 题意 test cpp
原文地址:http://www.cnblogs.com/cynchanpin/p/6993617.html