在 C++ 数组中存储 3 位二进制数
Store 3 bit binary numbers in C++ array
我有一个程序需要 2 个输入,N 和 myarray[ ]。
cin >> N;
cin >> myarray[];
在这个例子中,N=3 意味着必须分配一个大小为 3 的整数数组,并假设 myarray[ ] 的条目是 {1,2,3}。
现在我有一个函数 createsubset() 可以创建条目 {1,2,3} 的所有可能子集。我遵循的逻辑是:
包含 n 个元素的集合的子集总数为 m=2^n,因为一个元素在子集中可以存在也可以不存在。
所以,当m=7时对应的二进制数是111。
现在从 m=0 迭代到 m=7 以生成所有子集(除了集合本身,它是 m=8 的结果):
示例:
m=0, binary=000, subset={ }
m=1, binary=001, subset={c}
m=2, binary=010, subset={b}
m=3, binary=011, subset={b,c}
等等。
这是由函数 generate() 完成的,该函数从 m=0 迭代到 m=8。
void generate()
{
for(m=0; m<8; m++)
{
decimaltobinary(m);
}
}
现在,我必须将 decimaltobinary() 函数的输出(这是一个 3 位二进制数)存储在一个数组中,稍后我将使用它来创建子集。这是我现在卡住的部分。
我们可以将一个多位二进制数存储在一个数组中并直接使用吗?
请帮我解决这个问题。
也欢迎任何关于 createsubset() 函数的建议。
C/C++ 中的数字以二进制形式存储,因此无需 "convert"。您可以使用任何要存储 3 位数字的 C/C++ 无符号整数类型,例如,将它们存储在 std::vector 中就可以了。
沿着这条线,与其将您读取的数字存储到数组[固定大小的容器]中,不如考虑将它们存储在向量[可变大小的容器]中,因为您不知道大小"up front"
我有一个程序需要 2 个输入,N 和 myarray[ ]。
cin >> N;
cin >> myarray[];
在这个例子中,N=3 意味着必须分配一个大小为 3 的整数数组,并假设 myarray[ ] 的条目是 {1,2,3}。
现在我有一个函数 createsubset() 可以创建条目 {1,2,3} 的所有可能子集。我遵循的逻辑是:
包含 n 个元素的集合的子集总数为 m=2^n,因为一个元素在子集中可以存在也可以不存在。
所以,当m=7时对应的二进制数是111。 现在从 m=0 迭代到 m=7 以生成所有子集(除了集合本身,它是 m=8 的结果): 示例:
m=0, binary=000, subset={ }
m=1, binary=001, subset={c}
m=2, binary=010, subset={b}
m=3, binary=011, subset={b,c}
等等。
这是由函数 generate() 完成的,该函数从 m=0 迭代到 m=8。
void generate()
{
for(m=0; m<8; m++)
{
decimaltobinary(m);
}
}
现在,我必须将 decimaltobinary() 函数的输出(这是一个 3 位二进制数)存储在一个数组中,稍后我将使用它来创建子集。这是我现在卡住的部分。 我们可以将一个多位二进制数存储在一个数组中并直接使用吗? 请帮我解决这个问题。 也欢迎任何关于 createsubset() 函数的建议。
C/C++ 中的数字以二进制形式存储,因此无需 "convert"。您可以使用任何要存储 3 位数字的 C/C++ 无符号整数类型,例如,将它们存储在 std::vector
沿着这条线,与其将您读取的数字存储到数组[固定大小的容器]中,不如考虑将它们存储在向量[可变大小的容器]中,因为您不知道大小"up front"