c语言用循环算法找出 5 个自然数中取 3 个数的组合。
时间: 2023-04-01 16:01:47 浏览: 370
可以使用三重循环来实现,第一重循环枚举第一个数,第二重循环枚举第二个数,第三重循环枚举第三个数,需要保证第二个数大于第一个数,第三个数大于第二个数。具体实现可以参考以下代码:
#include <stdio.h>
int main()
{
int i, j, k;
for (i = 1; i <= 3; i++) {
for (j = i + 1; j <= 4; j++) {
for (k = j + 1; k <= 5; k++) {
printf("%d %d %d\n", i, j, k);
}
}
}
return ;
}
相关问题
c语言用循环算法找出 n 个自然数中取 r 个数的组合。
可以使用递归或循环的方式来实现组合的计算。以下是使用循环的算法:
#include <stdio.h>
void combination(int arr[], int n, int r) {
int i, j;
for (i = ; i < n; i++) {
for (j = i + 1; j < n; j++) {
if (r == 2) {
printf("%d %d\n", arr[i], arr[j]);
} else {
combination(arr + j, n - j, r - 1);
}
}
}
}
int main() {
int arr[] = {1, 2, 3, 4, 5};
int n = sizeof(arr) / sizeof(arr[]);
int r = 3;
combination(arr, n, r);
return ;
}
这个程序将输出所有从 5 个自然数中取 3 个数的组合。
用c语言代码实现,递归算法找出 5 个自然数中取 3 个数的组合。
可以使用以下代码实现:
#include <stdio.h>
void combination(int arr[], int n, int r, int index, int data[], int i) {
if (index == r) {
for (int j = 0; j < r; j++) {
printf("%d ", data[j]);
}
printf("\n");
return;
}
if (i >= n) {
return;
}
data[index] = arr[i];
combination(arr, n, r, index + 1, data, i + 1);
combination(arr, n, r, index, data, i + 1);
}
int main() {
int arr[] = {1, 2, 3, 4, 5};
int n = sizeof(arr) / sizeof(arr[0]);
int r = 3;
int data[r];
combination(arr, n, r, 0, data, 0);
return 0;
}