?? 【Monkey and Banana】http://acm.hdu.edu.cn/showproblem.php?pid=1069
#include
#include
#define max(x,y) x>y?x:y
int main()
{
int num,t,i,j,k,a[3],count,maxsum[1000],max,sum,f=0;
struct block
{
int x;
int y;
int z;
}cube[1000];
while(scanf("%d",&num),num)
{
count=0;
for(i=0;
i
scanf("%d%d%d",&a[0],&a[1],&a[2]);
for(j=0;
j<2;
j++)
for(k=0;
k<2-j;
k++)
if(a[k]>a[k+1])
{
t=a[k];
a[k]=a[k+1];
a[k+1]=t;
}
cube[count].x=a[0];
cube[count].y=a[1];
cube[count].z=a[2];
count++;
cube[count].x=a[0];
cube[count].y=a[2];
cube[count].z=a[1];
count++;
cube[count].x=a[1];
cube[count].y=a[2];
cube[count].z=a[0];
count++;
}
for(i=0;
i
if(cube[j].x>cube[j+1].x)
{
t=cube[j].x;
cube[j].x=cube[j+1].x;
cube[j+1].x=t;
t=cube[j].y;
cube[j].y=cube[j+1].y;
cube[j+1].y=t;
t=cube[j].z;
cube[j].z=cube[j+1].z;
cube[j+1].z=t;
}
if(cube[j].x==cube[j+1].x && cube[j].y>cube[j+1].y)
{
t=cube[j].x;
cube[j].x=cube[j+1].x;
cube[j+1].x=t;
t=cube[j].y;
cube[j].y=cube[j+1].y;
cube[j+1].y=t;
t=cube[j].z;
cube[j].z=cube[j+1].z;
cube[j+1].z=t;
}
}
for(i=0;
i
maxsum[i]=cube[i].z;
}
for(i=0;
i
max=0;
for(j=0;
jif(cube[j].x
max=maxsum[j];
maxsum[i]=maxsum[i]+max;
}
sum=0;
for(i=0;
i
sum=maxsum[i];
printf("Case %d: maximum height = %d\n",++f,sum);
}
return 0;
}
推荐阅读
- 技术|为参加2021年蓝桥杯Java软件开发大学B组细心整理常见基础知识、搜索和常用算法解析例题(持续更新...)
- 数据结构与算法|【算法】力扣第 266场周赛
- #|算法设计与分析(Java实现)—— 动态规划 (0-1 背包问题)
- 动态规划|暴力递归经典问题
- 动态规划|动态规划 —— 状压DP (附一些位运算小知识)
- 区间DP —— 能量项链
- 动态规划 —— 区间DP
- Codeforces|Codeforces Round #605 (Div. 3) D. Remove One Element
- LeetCode-28 实现strStr() KMP算法
- leetcode|递归、动态规划--Leetcode(python)