UVa:12455 Bars

搜索题,1Y。

直接暴搜,时间复杂度是O(2^n),恐怖的指数阶,因为数据量很小所以也没关系。

 

 

 

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
int L,n,a[25];
bool solve(int i,int sum)
{
    if(i>n)
    {
        if(sum==L) return true;
        else return false;
    }
    if(solve(i+1,sum+a[i])) return true;
    if(solve(i+1,sum)) return true;
    return false;
}
int main()
{
    int T;
    scanf("%d",&T);
    while(T--)
    {
        scanf("%d",&L);
        scanf("%d",&n);
        for(int i=1; i<=n; ++i)
            scanf("%d",&a[i]);
        if(solve(1,0))printf("YES\n");
        else printf("NO\n");
    }
    return 0;
}

你可能感兴趣的:(搜索,暴力)