编程之美2.14 解法二
来源:互联网 发布:python 开源 编辑:程序博客网 时间:2024/05/01 07:50
#include <iostream>
using std::endl;
using std::cout;
using std::cin;
int c=0; //为了测试
int find_Max(int *A, int n)
{
int sum_left, sum_right, sum_mid;
if(n==1)
{ cout << "C=" << c++ << " " <<*A << endl; return *A;}
else if(n==2)
{ cout << "C=" << c++ << " " << *A <<" " << *(A+1) << endl; return *A > *(A+1)? *A:*(A+1);}
int mid;
if(n%2==0)
mid=n/2;
else
mid=(n-1)/2;
int maxleft, maxright, i, temp;
for(i=mid-2, maxleft=A[mid-1], temp=maxleft; i>=0 ; i--)
{
maxleft+=A[i];
if(temp <= maxleft)
temp=maxleft;
}
maxleft=temp;
for(i=mid+1, maxright=A[mid], temp=maxright; i<n; i++)
{
maxright+=A[i];
if(temp<=maxright)
temp=maxright;
}
maxright=temp;
sum_mid=maxleft+maxright;
sum_left=find_Max(A, mid);
sum_right=find_Max(&A[mid], n-mid);
int max;
max=sum_left>=sum_right?sum_left:sum_right;
max=max>=sum_mid?max:sum_mid;
cout << "C=" << c++ << " "<< sum_left << " " << sum_right << " " << sum_mid << endl;
return max;
}
int main()
{
cout << "Please input some numbers:" << endl;
int A[10];
for(int i=0; i<10; i++)
cin >> A[i];
int max;
max=find_Max(A, 10);
cout << "The Max is: " << max << endl;
return 0;
}
- 编程之美2.14 解法二
- 编程之美 最短摘要解法二
- 编程之美4.3 买票找零解法二
- 编程之美:中国象棋将帅问题解法二
- 编程之美3.1解法
- 编程之美2.1 解法三
- 编程之美2.5寻找最大的K个数 解法二 Java版
- 编程之美--1.9高效率的安排见面会(解法二python)
- 《编程之美》最大公约数问题之循环解法
- 编程之美问题之二叉树层序遍历多种解法
- 编程之美1.4-买书问题-解法1
- 编程之美1.4-买书问题-解法2
- 编程之美: 24点游戏的解法
- (转)《编程之美》扫雷问题新解法
- 《编程之美》1.4买书问题解法
- 编程之美-1的数目 解法及性能比较
- 编程之美-2.7最大公约数问题java解法
- 《编程之美》2.7 最大公约数问题解法3改进
- Eclipse插件大全 挑选最牛的TOP30
- 文件操作中的lseek函数详解
- 新浪微博客户端开发学习笔记(-)
- Java的三大机制、命名规范、简述数据类型
- boost loki stl C++ 三大库
- 编程之美2.14 解法二
- editplus格式化xml文件
- linux date 的使用方法
- 多个JDK版本切换
- 谁拿了我的伞,谁拨动了我的心弦
- http://blog.csdn.net/netanimals (vc++)--netanimals的专栏
- Oracle Linux 真的是 CentOS 的更好替代品吗?
- Windows远程登录时共享本地硬盘
- OLEDB与ODBC关系