1、没升上DIV1我很怨念啊。。。就是枚举总钱数,然后用贪心的原则来求硬币数,看是否能得到合法解。合法的意思就是每个硬币都有至少一个且数量各不相同。
#include <vector>
#include <list>
#include <map>
#include <set>
#include <queue>
#include <deque>
#include <stack>
#include <bitset>
#include <algorithm>
#include <functional>
#include <numeric>
#include <utility>
#include <sstream>
#include <iostream>
#include <iomanip>
#include <cstdio>
#include <cmath>
#include <cstdlib>
#include <ctime>
#include <cstring>
using namespace std;
class ColorfulCoinsEasy {
public:
string isPossible(vector <int> values) {
int now=values[values.size()-1];
map <int,int> b;
for(int j=now;j<=20000*15;j++){
int jj=j;
b.clear();
for(int i=values.size()-1;i>=0;i--){
int cnt=jj/values[i];
if(cnt==0||b[cnt]==1) break;
else b[cnt]=1;
jj=jj%values[i];
if(jj==0&&i==0) return "Possible";
}
}
return "Impossible";
}
};