【暴力枚举】二进制枚举法-炉石传说
#include<iostream>
#define fcmin 1 // 一张随从牌
#define Ap 10 // 10点法力值
using namespace std;
int main(){
ios::sync_with_stdio(false);
// Input
int n; // 牌的数目
cin >> n;
int cards[n][3];
for(int i = 0; i < n; ++i){
for(int j = 0; j < 3; ++j){
cin >> cards[i][j];
}
}
// Process
// Judge_1
int flag = 0; // 无随从牌
for(int i = 0; i < n; i++){
if(!cards[i][1]){
flag = 1;
break;
}
}
if(!flag || (n == 0)){
cout << "0" << endl;
return 0;
}
// Judge_2
int max = 0;
for(int i = 0; i < (1 << n); ++i){
int consume = 0;
int FL = 0;
int num = 0;
for(int j = 0; j < n; ++j){
if(i & (1<<j)){
FL += cards[j][2];
consume += cards[j][0];
if(cards[j][1] == 0)num++;
}
}
if(consume <= Ap && num >=fcmin && FL > max){
max = FL;
}
}
cout << max << endl;
return 0;
}