计算笛卡尔乘积C语言
时间: 2024-08-12 22:10:33 浏览: 61
计算两个集合(通常是数组或列表)的笛卡尔乘积在C语言中可以通过嵌套循环和动态内存分配来实现。笛卡尔乘积指的是将第一个集合中的每个元素与第二个集合中的所有元素组合在一起形成的新集合。
以下是一个简单的示例代码,用于计算两个整数数组的笛卡尔积:
```c
#include <stdio.h>
#include <stdlib.h>
// 假设我们有两个数组 arr1 和 arr2
int* cartesianProduct(int arr1[], int arr2[], int len1, int len2, int* resultCount) {
*resultCount = len1 * len2;
int** product = (int**)malloc(*resultCount * sizeof(int*));
for (int i = 0; i < len1; i++) {
for (int j = 0; j < len2; j++) {
int* temp = (int*)malloc(sizeof(int) * 2);
temp = arr1[i];
temp = arr2[j];
product[i * len2 + j] = temp;
}
}
return product;
}
void printCartesianProduct(int** product, int size) {
for (int i = 0; i < size; i++) {
printf("(%d,%d)\t", product[i], product[i]);
}
printf("\n");
}
int main() {
int arr1[] = {1, 2};
int arr2[] = {3, 4};
int len1 = sizeof(arr1) / sizeof(arr1);
int len2 = sizeof(arr2) / sizeof(arr2);
int count;
int** result = cartesianProduct(arr1, arr2, len1, len2, &count);
printf("Cartesian Product:\n");
printCartesianProduct(result, count);
// 释放内存
for (int i = 0; i < count; i++) {
free(result[i]);
}
free(result);
return 0;
}
阅读全文