最大子段和問題 蠻力法 分治法 動態規劃法

2021-08-20 10:40:42 字數 2078 閱讀 9488

蠻力法:

int maxsum1(int a, int n)}}

return maxsum;

}

分治法:

int maxsum2(int left, int right, int a)

}sum = 0;

right_max = 0;

//求右邊的最大值

for(i = center + 1; i <= right; i++)

}sum = right_max+ left_max;

if(sum < left_sum)

sum = left_sum;

if(sum < right_sum)

sum = right_sum;

}return sum ;

}

動態規劃法:

void maxsum3(int a, int n)

}/* printf("\n\n動態規劃法 列印b陣列:");

for(i = 0; i < n; i++)

printf("\n");

*/ for(j = 0; j < n; j++)

}printf("\n動態規劃法求出最大子段和為:%d", maxsum);

for(i = s-1; i >= 0; i--)

printf("\n\n列印最大子段:\n");

for(i = i + 1; i <= s; i++)

}

完整**:

#include #include #define n 10

//判斷是否全為負數

int isfushu(int a, int n)

if(i == n)

return -1; //全是負數時

else

return 0; //有正數時

}//蠻力法

//從第乙個數開始,找第乙個到最後乙個數間最大欄位和;再從第二個數開始

int maxsum1(int a, int n)}}

return maxsum;

}//分治法

int maxsum2(int left, int right, int a)

}sum = 0;

right_max = 0;

//求右邊的最大值

for(i = center + 1; i <= right; i++)

}sum = right_max+ left_max;

if(sum < left_sum)

sum = left_sum;

if(sum < right_sum)

sum = right_sum;

}return sum ;

}//動態

void maxsum3(int a, int n)

}/* printf("\n\n動態規劃法 列印b陣列:");

for(i = 0; i < n; i++)

printf("\n");

*/ for(j = 0; j < n; j++)

}printf("\n動態規劃法求出最大子段和為:%d", maxsum);

for(i = s-1; i >= 0; i--)

printf("\n\n列印最大子段:\n");

for(i = i + 1; i <= s; i++)

}void print(int a, int n)

}void creat(int a)

}int main()

; int a[n];

creat(a);

print(a, n);

int sum = isfushu(a, n);

if(sum == -1)//全是負數值為0

printf("最大子段和是0");

else

return 0;

}

執行結果:

分治法 動態規劃 最大子段和

題目 給定n個整數 可能為負整數 組成的序列a1,a2,a3,a4,a5,an,求該序列子段和的最大值,子段和 定義為連續 下標遞增 的元素之和。當所有的整數均為負整數時定義其最大子段和為0。如序列為時,最大子段和為20。該問題可以用分治法或者動態規劃來求解。下面給出兩種演算法的思路及 實現 思路 ...

最大子段和問題(分治法和動態規劃)

什麼是最大子段和,通俗點講 最大子段和就是給了一些數,然後你從中找了幾個連續的數,這組連續的數的和比任意一組連續的數的和都大,那麼你找的這幾個連續的數的和就是這些數的最大子段和。通俗的聽不懂你就看這裡 給定由n個整數 可能為負整數 組成的序列 分治法思想 如果將所給的序列a 1 n 分為長度相等的兩...

最大子段和之分治法

問題描述 給定乙個陣列,找出其中可以構成最大數的子段,需要注意的是,這個不同於最大子串行求和 最大字段求和 字段必須是連續的 最大子串行求和 子串行只要是包含在原來的序列中即可 舉個例子 1 4 3 1 5 1 4 5 2 求上述的陣列中的最大欄位和,不難得知,最大子段和就是 10 也就是子段4 3...