您的位置:首页 > 其它

Nyoj 47 过河问题

2014-04-18 15:27 190 查看
题目来源:http://acm.nyist.net/JudgeOnline/problem.php?pid=47

资料参考:/article/10999442.html

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>

using namespace std;

const int MAXN = 1010;

int Cross_River(int a[], int n)
{
if(n == 1)
return a[0];
if(n == 2)
return a[1];
if(n == 3)
return a[0]+a[1]+a[2];
if(n >= 4)
{
if(2*a[1] >= a[0] + a[n-2])
return 2*a[0]+a[n-2]+a[n-1] + Cross_River(a, n-2);
else
return 2*a[1]+a[0]+a[n-1] + Cross_River(a, n-2);
}
}

int main()
{
int T, arr[MAXN], n;
scanf("%d", &T);
while(T--)
{
scanf("%d", &n);
memset(arr, 0, sizeof(arr));
for(int i = 0; i < n; ++i)
scanf("%d", &arr[i]);
sort(arr, arr+n);
printf("%d\n", Cross_River(arr, n));
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: