//国际大学生程序设计竞赛例题解(三)
//动态规划
//Page107
Recursion Version
#include <iostream>
#include <cstdio>
using namespace std;
int data[100];
int getMax(int left, int right)
{
if(left == right)
{
return data[left];
}
int t1 = getMax(left, (left + right) / 2);
int t2 = getMax((left + right) / 2 + 1, right);
return t1 >= t2 ? t1 : t2;
}
int main()
{
int n;
cin >> n;
for(int i = 1; i < n; i++)
{
cin >> data[i];
}
cout << getMax(1, n) << endl;
return 0;
}
Non-Recursion Version
#include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std;
int data[100];
bool cmp(const int& a, const int& b)
{
if(a > b) return true;
else return false;
}
int main()
{
int n;
cin >> n;
for(int i = 0; i < n; i++)
{
cin >> data[i];
}
sort(data, data + n, cmp);
cout << data[0] << endl;
return 0;
}