算法导论之分治法
来源:互联网 发布:淘宝怎么搜索同城店铺 编辑:程序博客网 时间:2024/06/02 07:31
参考网址:这里写链接内容
#include<iostream>#include<math.h>using namespace std;// 返回跨越中值的最大数组和int* find_max_crossing_sub(int *arr, int low, int mid, int high){ int left_sum = INT_MIN; int sum = 0; int max_left = mid; for (int i = mid; i >= low; i--) { sum += arr[i]; if (sum > left_sum) { left_sum = sum; max_left = i; } } int right_sum = INT_MIN; sum = 0; int max_right = 0; for (int i = mid+1; i <= high; i++) { sum += arr[i]; if (sum > right_sum) { right_sum = sum; max_right = i; } } // cout << "左值下标:" << max_left << "右值下标:" << max_right << "总和:" << (left_sum + right_sum) <<endl; int *data; data = new int [3]; data[0] = max_left; data[1] = max_right; data[2] = left_sum + right_sum; return data;}// 分治算法int* find_max_sub(int *arr, int low, int high){ if (high == low) { int *data = new int[3]; data[0] = low; data[1] = high; data[2] = arr[low]; return data; } else { int *leftdata = new int[3]; int *rightdata = new int[3]; int *middata = new int[3]; int mid = int(floor((high + low)/2)); leftdata = find_max_sub(arr, low, mid); rightdata = find_max_sub(arr, mid+1, high); middata = find_max_crossing_sub(arr, low, mid, high); if (leftdata[2] >= rightdata[2] && leftdata[2] >= middata[2]) { return leftdata; } else { if (rightdata[2] >= leftdata[2] && rightdata[2] >= middata[2]) { return rightdata; } else { return middata; } } }}int main(){ int arr[] = {13,-3,-25,20,-3,-16,-23,18,20,-7,12,-5,-22,15,-4,7}; int *data = new int[3]; data = find_max_sub(arr, 0, 15); cout << "左值下标:" << data[0] << "右值下标:" << data[1] << "总和:" << data[2] <<endl; system("pause"); return 0;}
0 0
- 算法导论之分治法
- 算法导论之分治法
- 算法导论之分治法
- 算法导论学习之分治法
- 【算法导论】分治法
- 算法导论--分治法
- 算法导论笔记一:算法设计之分治法
- 算法导论:分治法(2)
- 算法导论--分治法--P17
- 算法导论第二版笔记之分治法
- 《算法导论》 2.3.1分治法
- 算法导论:分治法(1)
- [算法导论]分治法---最大子数组
- 分治法(算法导论Lec3)
- 【算法导论】03——分治法
- 【算法导论】分治法及归并排序
- 算法导论 第四章:分治法(二)
- 【算法导论】分治策略
- spring mvc 如何传递集合参数(list,数组)
- 吃糖果
- 最后一本书 第六章课后练习3,4
- 用Hive+Hadoop集群实现《飞机票购买人群分类案例》思路+代码 (实验数据待整理)
- zoj-【2857 Image Transformation 】
- 算法导论之分治法
- Spring MVC+MyBatis
- 测试存储性能
- 浅谈RxJava与2.0的新特性
- Kettle源码搭建的错误总结
- Python 平时遗漏点整理-enumerate()
- codeforces round305 div2 Mike and Feet 排序+并查集
- 软件开发人员角色定位和分工
- form中enctype属性