我有一个数组,现在要挑选指定数量的元素,将所有情况组成二维数组,实现元素的排列组合,请用js代码实现
时间: 2024-05-05 09:19:45 浏览: 13
可以使用递归的方式实现排列组合,以下是一个示例代码:
```javascript
function combine(arr, len) {
let result = [];
function dfs(start, temp) {
if (temp.length === len) {
result.push([...temp]);
return;
}
for (let i = start; i < arr.length; i++) {
temp.push(arr[i]);
dfs(i + 1, temp);
temp.pop();
}
}
dfs(0, []);
return result;
}
// 示例
const arr = [1, 2, 3];
const len = 2;
const res = combine(arr, len);
console.log(res); // [[1, 2], [1, 3], [2, 3]]
```
其中 `arr` 是原始数组,`len` 是需要挑选的元素数量。通过递归遍历数组,在每一层递归中选择一个元素加入到临时数组中,当临时数组长度等于所需元素数量时,将其加入到结果数组中。最后返回结果数组。
相关问题
我有一个数组,现在要挑选指定数量的元素,将所有情况组成二维数组,实现元素的排列组合,请用ts代码实现
好的,以下是一个 TypeScript 实现:
```typescript
function combine<T>(arr: T[], num: number): T[][] {
const result: T[][] = [];
const temp: T[] = [];
const dfs = (start: number) => {
if (temp.length === num) {
result.push([...temp]);
return;
}
for (let i = start; i < arr.length; i++) {
temp.push(arr[i]);
dfs(i + 1);
temp.pop();
}
};
dfs(0);
return result;
}
```
这个函数接受一个数组 `arr` 和一个数字 `num`,返回一个由 `num` 个元素组成的子数组组成的数组,表示从 `arr` 中挑选 `num` 个元素的所有可能组合。
例如,如果你有一个数组 `[1, 2, 3, 4]`,想要挑选 3 个元素,那么调用 `combine([1, 2, 3, 4], 3)` 将返回如下二维数组:
```
[
[1, 2, 3],
[1, 2, 4],
[1, 3, 4],
[2, 3, 4]
]
```
我有一个二维数组,如何实现每个元素都除以二
假设这个二维数组是一个 $n\times m$ 的矩阵,你可以使用两个循环遍历每个元素,然后将其除以二。具体的实现代码如下:
```python
# 假设二维数组为 mat
n, m = len(mat), len(mat[0])
for i in range(n):
for j in range(m):
mat[i][j] /= 2
```
这段代码将遍历每个元素,然后把元素的值除以 2,实现了每个元素都除以二的功能。