这道题其实思路很简单,就是判断所有的组合中不重复的满足要求的袋子的个数,最大的难点就是不重复。因为可能包含相同的球,比如1 1 和 1 1就是重复的。我加用了一个vector来存储每个球出现的次数,每次可以选择1 - bucket[i]中的一个。
#include<iostream>
#include<algorithm>
#include<vector>
#include<stack>
#define max 1001
using std::cin;
using std::cout;
using std::endl;
using std::vector;
using std::string;
using std::stack;
void happyNum(int product, int sum, int i,const vector<int>&nums, const vector<int>&bucket, int& count, int sourceNum)
{
//sourceNum用于判断是否是第一个数
if (sourceNum == sum )//该数字是第一个 而且没有重复
{