作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试用 C 语言编写一个程序,以尝试如何以各种可能的方式组合由用户输入的 6 个数字(到目前为止没有问题)。
我尝试使用搜索功能,但不太确定要查找什么。
它应该是这样的:
...
temp[i] = a + b + c + d - e - f;
i++;
temp[i] = a + b + c - d - e - f;
i++;
temp[i] = a + b - c - d - e - f;
i++;
...
还有乘法和除法。
最好能实现所有放在括号中而不使用所有数字的方法。
所以就像从这些数字中暴力破解所有可能的结果一样。
有没有什么方法可以在不手动对每个组合进行编码的情况下实现这一目标?
最佳答案
Recursion对于这类事情非常有用:
#include <stdio.h>
void compute_all_combinations(int *list, int length, int running_total) {
if (length <= 0) {
printf("%d\n", running_total);
return;
}
compute_all_combinations(list+1, length-1, running_total + *list);
compute_all_combinations(list+1, length-1, running_total - *list);
}
int main() {
int numbers[4] = { 3141, 5926, 5358, 9793 };
compute_all_combinations(numbers, 4, 0);
return 0;
}
compute_all_combinations()
函数将接受任意长度的列表(在合理范围内)。它递归地调用自己来跨越代表您要计算的总和的整个决策树(即,在每个节点处,向左/向右叉以添加/减去节点的值),并打印出每个叶节点的结果。我希望它是不言自明的
关于c - 有没有办法在 while 或 for 循环中交换数学运算符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60196706/
我是一名优秀的程序员,十分优秀!