标签:des c style class blog code
Description
Input
Output
Sample Input
3 4 1 1 1 1 5 10 20 30 40 50 8 1 7 2 6 4 4 3 5
Sample Output
yes no yes
这个题可以说是poj1011的减弱版,只需要查一个值,不过在dfs时候的剪枝基本上是一模一样的
#include<map> #include<set> #include<stack> #include<queue> #include<cmath> #include<vector> #include<cstdio> #include<string> #include<cstring> #include<cstdlib> #include<iostream> #include<algorithm> #define inf 0x0f0f0f0f using namespace std; bool cmp(int x,int y) { return x>y; } int n,a[21]; bool vis[21]; bool dfs(int nowlen,int Len,int x,int num) { if (num==n) return true; int temp=0; for (int i=x;i<n;i++) { if (vis[i] || a[i]==temp) continue; vis[i]=true; if (nowlen+a[i]<Len) { if (dfs(nowlen+a[i],Len,i+1,num+1)) return true; else temp=a[i]; } if (nowlen+a[i]==Len) { if (dfs(0,Len,0,num+1)) return true; else temp=a[i]; } vis[i]=false; if (nowlen==0) break; } return false; } int main() { int t,sum; scanf("%d",&t); while (t--) { sum=0; memset(vis,0,sizeof(vis)); scanf("%d",&n); for (int i=0;i<n;i++) { scanf("%d",&a[i]); sum+=a[i]; } sort(a,a+n,cmp); if (sum%4==0) { if (dfs(0,sum/4,0,0)) printf("yes\n"); else printf("no\n"); } else printf("no\n"); } return 0; }
作者 chensunrise
poj 2362 Square,布布扣,bubuko.com
标签:des c style class blog code
原文地址:http://www.cnblogs.com/chensunrise/p/3760081.html