nyoj-47-过河问题&&poj-1700-Crossing River
2013-08-15 17:11
435 查看
#include<stdio.h>
#include<stdlib.h>
int a[1005];
int cmp(const void *a,const void *b)
{
return *(int *)a-*(int *)b;
}
int guohe(int *a,int n)
{
if(n==1)
return a[0];
else if(n==2)
return a[1];
else if(n==3)
return a[0]+a[1]+a[2];
else if(2*a[1]>=a[0]+a[n-2])
return 2*a[0]+a[n-1]+a[n-2]+guohe(a,n-2);
else
return a[0]+2*a[1]+a[n-1]+guohe(a,n-2);
}
int main()
{
int s;
scanf("%d",&s);
while(s--)
{
int n,i;
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&a[i]);
qsort(a,n,sizeof(a[0]),cmp);
printf("%d\n",guohe(a,n));
}
return 0;
}
#include<stdlib.h>
int a[1005];
int cmp(const void *a,const void *b)
{
return *(int *)a-*(int *)b;
}
int guohe(int *a,int n)
{
if(n==1)
return a[0];
else if(n==2)
return a[1];
else if(n==3)
return a[0]+a[1]+a[2];
else if(2*a[1]>=a[0]+a[n-2])
return 2*a[0]+a[n-1]+a[n-2]+guohe(a,n-2);
else
return a[0]+2*a[1]+a[n-1]+guohe(a,n-2);
}
int main()
{
int s;
scanf("%d",&s);
while(s--)
{
int n,i;
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&a[i]);
qsort(a,n,sizeof(a[0]),cmp);
printf("%d\n",guohe(a,n));
}
return 0;
}
相关文章推荐
- nyoj-47-过河问题|POJ-1700-Crossing River
- POJ-1700 &&NYOJ 47 过河问题【贪心】
- poj 1700 Crossing River && nyoj 47 过河问题
- POJ 1700 & NYLG 47 过河问题(贪心 || DP)
- [ACM] poj 1700 Crossing River (经典过河问题)
- POJ 1700 过河问题(Crossing River)
- POJ--1700--Crossing River--过河问题
- POJ 1700 Crossing River 过河问题 贪心法
- POJ - 1700 Crossing River解题报告(过河问题的贪心策略)
- POJ1700:Crossing River(过河问题)
- POJ 1700 解题报告——Crossing River:求过河的最少时间问题
- poj 1700 Crossing River 过河问题。贪心
- poj 1700 过河问题
- NYOJ 191 && POJ 1012 Joseph(约瑟夫环问题)
- poj 1700 过河问题 贪心法
- 贪心-POJ 1700 过河问题
- NYOJ-47 过河问题
- nyoj 47 过河问题(贪心)
- NYOJ-47过河问题
- nyoj 47 过河问题