哪些平台制作网站,上海电商设计招聘网站,发任务做任务得网站,门户网站举例问题描述#xff1a;
输入一个整型数组#xff0c;数组里有正数也有负数。求连续子数组中的最大和为多少。
举例#xff1a;
数组#xff1a;arry{1 , 2 #xff0c;-5 , 4 , 1 #xff0c;-2}
输出#xff1a;5#xff0c;数组中连续的位置相加最大值为5, 41
方法…问题描述
输入一个整型数组数组里有正数也有负数。求连续子数组中的最大和为多少。
举例
数组arry{1 , 2 -5 , 4 , 1 -2}
输出5数组中连续的位置相加最大值为5, 41
方法
设立一个dp数组存储当前最大和状态。初始时将数组对应数字填入dp中。然后从头开始遍历dp如果前一位dp[i]中保存的数大于0则更新当前的dp值。更新结果是当前dp的值加上前一个dp的值。
代码
#define _CRT_SECURE_NO_WARNINGS 1
#includestdio.h
#includemath.h
int main() {int data[81], dp[81];int i, num, max 0;printf(please input num:\n);scanf(%d, num);printf(please input data:\n);for (i 0; i num; i) {scanf(%d, data[i]);}for (i 0; i num; i) {//将data的数据复制到dp中dp[i] data[i];}for (i 1; i num; i) {if (dp[i - 1] 0) {//如果dp前一个位置的值大于0则与当前位置相加更新当前位置的值dp[i] dp[i] dp[i - 1];}}for (i 0; i num; i) {if (max dp[i]) {max dp[i];}}printf(the maximum sum of continuous subarrays is %d\n, max);return 0;
}运行结果截图 如果该内容对你有小小的帮助请给我点个赞谢谢。