最基础的暴搜,连枝都没剪都能过,好水啊。。。
#include <cstdio>
#include <iostream>
#include <algorithm>
#include <string>
#include <cstring>
#include <vector>
#include <stack>
#include <queue>
#include <cmath>
#include <climits>
using namespace std;
const int MAXN = 25;
const int INF = INT_MAX;
int thing[MAXN], sum, n;
bool visit[MAXN];
void dfs(int weight, int current){
if(weight == 40){
sum ++;
return;
}
for(int i = current; i < n; i++){
if(visit[i] || (weight + thing[i] > 40)) continue;
visit[i] = true;
dfs(weight + thing[i], i + 1);
visit[i] = false;
}
return;
}
int main(){
// freopen("in.txt", "r", stdin);
while(~scanf("%d", &n)){
for(int i = 0; i < n; i++){
scanf("%d", &thing[i]);
}
memset(visit, false, sizeo