算法-分治策略
来源:互联网 发布:电信网络诈骗手段 编辑:程序博客网 时间:2024/06/07 03:55
分治法
- 最大子数组问题
- 矩阵乘法Strassen算法
最大子数组
- 运用分治策略:时间复杂度O(NlogN)
- 运用DP策略:线性时间O(N)
int FindMaxCrossSubarray(vector<int> &arr, int low, int mid, int high){ int left_sum=INT_MIN; int right_sum=INT_MIN; int sum=0; for(int i=mid;i>=low;i--){ sum+=arr[i]; if(sum>left_sum) left_sum=sum; } sum=0; for(int i=mid+1;i<=high;i++){ sum+=arr[i]; if(sum>right_sum) right_sum=sum; } return left_sum+right_sum;}int FindMaxSubarray(vector<int> &arr, int low, int high){ int left_sum=0; int right_sum=0; int cross_sum=0; if(high==low) return arr[low]; else{ int mid=(high+low)/2; left_sum=FindMaxSubarray(arr, low, mid); right_sum=FindMaxSubarray(arr, mid+1, high); cross_sum=FindMaxCrossSubarray(arr, low, mid, high); if(left_sum>=cross_sum && left_sum>=right_sum) return left_sum; else if(right_sum>=cross_sum && right_sum>=left_sum) return right_sum; else return cross_sum; }}
int FindMaxSubarray(vector<int> &arr){ int sum=0; int ans=INT_MIN; for(int i=0;i<arr.size();i++){ sum+=arr[i]; ans=max(sum,ans); sum=max(sum,0); } return ans;}
0 0
- 三、分治算法策略
- 【算法导论】分治策略
- 分治策略(算法)
- 算法-分治策略
- 算法_6:分治策略
- 算法——分治策略
- 算法--递归与分治策略
- 算法思想之分治递归策略
- 算法中分治策略实现合并排序
- 算法中分治策略实现快速排序
- 算法复习-递归与分治策略
- 算法导论,分治策略,最大子数组
- 递归和分治策略的算法总结
- 算法导论——分治策略
- 全排列算法实现 分治策略
- 整数划分算法实现 分治策略
- 算法复习2:递归与分治策略
- 【分治策略】归并排序算法总结
- 给jdk写注释系列之jdk1.6容器(12):PriorityQueue源码解析PriorityQueue是一种什么样的容器呢?看过前面的几个jdk容器分析的话,看到Queue这个单词你一定会,哦~这
- Java的多态及注意事项
- C语言小知识复习1
- 论软件研发过程 目标+方法=结果
- android adb技巧总结
- 算法-分治策略
- Java学习笔记struts2篇--通配符
- 友盟5.0分享 总结
- 排序算法系列:快速排序算法
- google protobuf在ubuntu上安装使用步骤
- consul简介
- 使用wireshark对TLS加密的数据进行实时的解密
- 记录访客的(ip,浏览器,ip归属地,操作系统代码)并记录在文件中
- 4231421