| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
求大神帮小女看看这道水题。。。为啥总是WA#include<iostream>
#include<cstring>
#include<string>
#include<algorithm>
#include<cstdio>
#include<cmath>
using namespace std;
int len[30]; int num; bool used[30];
bool dfs(int l, int need, int res)
{
//printf("dfs%d %d %d\n", l, need, res);
//bool tmp[10003]; memset(tmp, 1, sizeof(tmp));
if (res == 0 && need == 0)return true;
if (res == 0 && need != 0)return false;
if (need == 0)need = l;
for (int i = num-1; i >-1; i--)
{
if (len[i] <= need&&used[i] == 0)// && tmp[len[i]] == 1)
{
used[i] = 1;
if (dfs(l, need - len[i], res - 1))return true;
used[i] = 0; //tmp[len[i]] = 0;
if (need == l)return false;
}
}
}
int main()
{
int test; cin >> test;
while (test != 0)
{
int sum = 0; int big = 0;
test--;
memset(len, 0, sizeof(len)); memset(used, 0, sizeof(used));
cin >> num;
for (int i = 0; i < num; i++)
{
cin >> len[i]; sum += len[i];big = max(big,len[i]);
}
if (sum % 4 != 0){ cout << "no" << endl; continue; }
int l = sum / 4;
if (l<big){ cout << "no" << endl; continue; }
sort(len, len + num);
if (dfs(l, l, num)){ cout << "yes" << endl; continue; }
cout << "no" << endl; continue;
}
return 0;
}
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator