0
如何獲取一組大小爲N的數字並打印給定基數的所有可能子集?在一組中找出基數C的所有可能的子集0-N
例如[0 1 2],2 - > [0 1],[0 2],[1,2]
我找不到代碼,而且花了一些時間寫出來,所以我想它可能是有幫助:)
如何獲取一組大小爲N的數字並打印給定基數的所有可能子集?在一組中找出基數C的所有可能的子集0-N
例如[0 1 2],2 - > [0 1],[0 2],[1,2]
我找不到代碼,而且花了一些時間寫出來,所以我想它可能是有幫助:)
您可以使用此功能:
void printSets(int N, int Cardinality)
{
std::vector<int> nums;
helper(nums, 0, 0, N, Cardinality);
}
使用輔助函數:
void helper(std::vector<int> &nums, int size, int index, int max, int cardinality)
{
if (size == cardinality) //SET IS READY TO PRINT (base case)
{
for (int k = 0; k < cardinality; ++k)
std::cout<< nums[k] << " ";
std::cout << std::endl;
return;
}
for (int i = index; i < max+1; ++i) //WE LOOP THROUGH THE SPACES LEFT
{
nums.push_back(i);
helper(nums, size+1, i+1, max, cardinality); //WE NEST AS MANY LOOPS AS THE CARDINALITY
nums.pop_back();
}
}
如果你問一個更好的解決方案,你應該把這個問題部分而不是回答。 –
@TonyTannous我真的沒有。我用這個做了一個項目,我完成了它。我只是好奇而已。這就是爲什麼它在一個P.S. –