如何根据输入参数n生成仅由0和1组成的全组合二维数组
01二维数组生成方案
实现思路
你需要的数组本质是n位0/1值的全排列集合,核心实现逻辑如下:
- 数组固定维度:行数为
2^n,列数为n - 遍历0到
2^n - 1区间的所有整数 - 把每个整数转换为长度为n的二进制字符串,不足长度的高位补0
- 将二进制字符串的每一位转为数字,作为数组的对应行元素
默认实现输出的是二进制数自然递增的全排列顺序,如果你需要严格匹配你给出的n=3示例的自定义顺序,调整生成后的数组排序规则即可。
代码示例
Python 实现
def generate_01_array(n): return [[int(bit) for bit in format(i, f'0{n}b')] for i in range(2 ** n)] # 测试示例:n=2时输出 [[0,0], [0,1], [1,0], [1,1]] print(generate_01_array(2))
JavaScript 实现
function generate01Array(n) { const rowCount = Math.pow(2, n); const result = []; for (let i = 0; i < rowCount; i++) { // 转二进制后高位补0到n位 const binaryStr = i.toString(2).padStart(n, '0'); result.push(binaryStr.split('').map(Number)); } return result; }
Java 实现
public class Array01Generator { public static int[][] generate01Array(int n) { int rowCount = 1 << n; // 等价于2^n int[][] result = new int[rowCount][n]; for (int i = 0; i < rowCount; i++) { for (int j = 0; j < n; j++) { // 取对应位的二进制值 result[i][j] = (i >> (n - 1 - j)) & 1; } } return result; } }
内容的提问来源于stack exchange,提问作者Minh Duc
相关产品推荐
相关产品推荐

