[英]Generate an array of numbers from a number and a mask of bits in C++
我想創建一個從位掩碼返回數字數組(或向量)的函數,我的函數頭為:
vector generateArray(int number, int maskSize)
如果我這樣調用此函數:
generateArray(4,2)
4等於二進制100
它將返回一個具有以下數字的向量:5,6,7,它們位於二進制101,110和111中。因此該函數更改了數字100的所有最后2位以生成所有可能性。
我不知道該怎么做..任何想法都會有很大幫助!
提前致謝
掩碼大小可以認為是生成可以使用maskSize
位表示的所有數字的一種方式。 在您的示例中,該位是2
或2位,它具有2 2個可能的值:00 01 10 11或0、1、2、3,如果將每個number
加到number
得到4、5、6和7 。
因此,您要做的就是計算從2 maskSize可以到達的所有數字,並將這些數字添加到“數字”中以填寫您的數組。
這應該可以解決問題-
void generateArray(int n, int m) {
if (m == 0) {
printf ("%d\n", n);
return;
}
int mask = 1 << (m-1);
generateArray(n & ~mask, m-1);
generateArray(n | mask, m-1);
}
此C代碼可以打印出數字,但原理是相同的-只需對其進行修改以將其累加到向量中,然后刪除初始參數即可。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.