c语言数组分成四个和相等的数组
时间: 2023-11-24 20:51:49 浏览: 33
以下是将一个C语言数组分成四个和相等的数组的代码示例:
```c
#include <stdio.h>
int main() {
int arr[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12};
int n = sizeof(arr) / sizeof(arr[0]);
int sum = 0;
for (int i = 0; i < n; i++) {
sum += arr[i]; }
if (sum % 4 != 0) {
printf("Cannot divide the array into 4 equal sum subsets.\n");
return 0;
}
int subsetSum = sum / 4;
int dp[subsetSum + 1][n + 1];
for (int i = 0; i <= subsetSum; i++) {
for (int j = 0; j <= n; j++) {
if (i == 0) {
dp[i][j] = 1;
} else if (j == 0) {
dp[i][j] = 0;
} else {
dp[i][j] = dp[i][j - 1];
if (i >= arr[j - 1]) {
dp[i][j] = dp[i][j] || dp[i - arr[j - 1]][j - 1];
}
}
}
}
if (!dp[subsetSum][n]) {
printf("Cannot divide the array into 4 equal sum subsets.\n");
return 0;
}
int i = subsetSum, j = n;
while (i > 0 && j > 0) {
if (dp[i][j - 1]) {
j--;
} else {
printf("Subset %d: ", 4);
while (i >= arr[j - 1]) {
i -= arr[j - 1];
printf("%d ", arr[j - 1]);
j--;
}
printf("\n");
}
}
return 0;
}
```
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)