arrays - 关于从数组中的每个元素生成有序对的问题
问题描述
我很好奇我怎么可能遍历一个数组,并跟踪每一个可能的有序对。
创造一个问题来说明这一点;假设我有一个函数,它接收一个输入数组、该数组的长度和一个“目标”,它是 2 个值的乘积,并输出一个数组,该数组由您需要按顺序相乘的输入数组的索引组成获得“目标”。
int* multipairs(int* inputarray, int arraysize, int target){
/code
}
例如:
给定一个数组arr = [2, 5, 1, 9, 1, 0, 10, 2]
, 和target = 50
它应该返回output = [1,6]
。
在我看来,我将遍历数组如下;
(0,1) -> (0,2) -> (0,3) -> (0,4)....
在第二遍中,我会这样做:
(1,2) -> (1,3) -> (1,4)...
.
.
.
等等
我有我想做什么的想法,但我不熟悉 C 编程,也不知道如何制作合适的 for 循环。请帮我解决这个问题。
解决方案
您可以使用嵌套的 for 循环来解决您的问题。
int* multipairs(int* inputarray, int arraysize, int target){
int i, j, k = -1;
/*
Maximum number of such pairs can be arraysize*(arraysize-1)/2
Since, for each pair we store two indices (0-indexed),
maximum size of output array will be arraysize*(arraysize-1)
*/
int maxsize = arraysize*(arraysize-1);
int *output = (int*)malloc(sizeof(int)*maxsize);
for (i = 0, i < arraysize; i++){
for (j = i + 1; j < arraysize; j++){
if(inputarray[i] * inputarray[j] == target){
output[++k] = i;
output[++k] = j;
}
}
}
return output;
}
推荐阅读
- jenkins - 如何在詹金斯工作区中签出 Artifactory 回购
- machine-learning - 我应该使用哪种机器学习算法来预测特定停车位是否会被占用?
- javascript - 在本机反应中使用 https 模块
- twitter-bootstrap - 如何使用 Bootstrap 创建自动网格布局
- prefect - 有没有办法在每个计划的流程运行时更新参数?
- logstash - Logstash - 更改克隆文档中字段的值(logstash-clone 过滤器插件)
- node.js - MS Bot 获取当前页面 url - Node.js
- pandas - Pandassql:加入两个表会改变列时间
- javascript - 如何使用 React 仅返回 JSON 数据的前 10 个结果
- c# - 如何从 IEnumerable 传递 int
自定义枚举验证器?