#include <stdio.h> #include <stdlib.h> int maxSubArray(int* nums, int numsSize) { if (numsSize == 0) { return 0; // 如果数组为空,返回0 } int max_current = nums[0]; // 当前子列的最大和 int max_global = nums[0]; // 全局最大和 for (int i = 1; i < numsSize; i++) { // 更新当前子序列的和 max_current = (nums[i] > max_current + nums[i]) ? nums[i] : (max_current + nums[i]); // 更新全局最大和 if (max_current > max_global) { max_global = max_current; } } return max_global; } int main() { int size; printf("请输入数列的长度: "); scanf("%d", &size); if (size <= 0) { printf("长度必须大于零。\n"); return 1; } int* nums = (int*)malloc(size * sizeof(int)); // 动态分配内存 printf("请输入数列 (%d 个整数,以空格分隔): ", size); for (int i = 0; i < size; i++) { scanf("%d", &nums[i]); } int result = maxSubArray(nums, size); printf("最大子列和为: %d\n", result); // 输出结果 free(nums); // 释放动态分配的内存 return 0; }
求解最大子列和
最新推荐文章于 2025-07-01 15:12:41 发布