您的位置:首页 > 其它

ZOJ Problem Set - 1093Monkey and Banana

2010-03-03 20:50 267 查看
 

简单DP

 

 

#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
struct point
{
int x;
int y;
int value;
int wi;
}mp[10000];
int cmp(point a,point b)
{
if(a.x==b.x)return a.y<b.y;
return a.x<b.x;
}
int main()
{
int T,ca=0,a[3],np,i,j,key,nx,ny;
point uu;
while(1)
{
np=0;
scanf("%d",&T);
if(T==0)break;
for(i=0;i<T;i++)
{
scanf("%d%d%d",&a[0],&a[1],&a[2]);
sort(a,a+3);
mp[np].x=a[0];
mp[np].y=a[1];
mp[np].value=a[2];
np++;
if(a[2]!=a[1]&&a[0]!=a[1])
{
mp[np].x=a[1];
mp[np].y=a[2];
mp[np].value=a[0];
np++;
}
if(a[1]!=a[2])
{
mp[np].x=a[0];
mp[np].y=a[2];
mp[np].value=a[1];
np++;
}
}
sort(mp,mp+np,cmp);
for(i=0;i<np;i++)
mp[i].wi=mp[i].value;
for(i=0;i<np;i++)
{
for(j=i+1;j<np;j++)
{
if(mp[i].x<mp[j].x&&mp[i].y<mp[j].y&&mp[j].wi<mp[i].wi+mp[j].value)
{
mp[j].wi=mp[i].wi+mp[j].value;
}
}
}
key=0;
for(i=0;i<np;i++)
{
if(key<mp[i].wi)
key=mp[i].wi;
}
printf("Case %d: maximum height = %d/n",++ca,key);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: