最小m段和

来源:互联网 发布:战舰世界大和数据穿深 编辑:程序博客网 时间:2024/05/16 06:36
#include <iostream>using namespace std;int main(){int n = 9;int m = 3;int arr[] = { 9, 8, 7, 6, 5, 4, 3, 2, 1 };int **r = new int*[n];for (int i = 0; i < n; i++){r[i] = new int[m]();}r[0][0] = arr[0];for (int i = 1; i < n; i++){r[i][0] = r[i-1][0] + arr[i];}for (int i = 1; i < m; i++){r[i][i] = arr[i];}//数组处理for (int j = 1; j < m; j++){for (int i = j+1; i < n; i++){int min = INT_MAX;int max = 0;for (int k = j; k < i; k++){max = (r[i][0] - r[k][0])>r[k][j - 1] ? (r[i][0] - r[k][0]) : r[k][j - 1];//让主序列和达到最大值,左边(r[i][0] - r[k][0])的是从k个到i的序列分成一组,右边r[k][j - 1]的是前k个序列分成j-1组;min = min < max ? min : max;}r[i][j] = min;}}for (int i = 0; i < n; i++){for (int j = 0; j < m; j++){cout << r[i][j] << "    ";}cout << endl;}cout << endl;cout << "子序列和最大值的最小值为:" << r[n - 1][m - 1] << endl;return 0;}

0 0
原创粉丝点击