猴子与香蕉

题意:猴子想要吃到香蕉,通过搭积木的方式,取到挂到高处的香蕉。每一个积木都是一个长方体,有三个尺寸x,y,z.你可以任意选取其中一个为积木的高度,其他两个为积木的长或宽、或者是宽和高。堆积木时,要求上一块的长和宽都要小于下一块的长和宽。
现在n种类型的积木,每一种积木有无数块。
题解:
每一种积木有六种放置方法,对长从大到小排序,就装换成了,求一组数的最长下降子序列。

import java.util.Arrays;
import java.util.Scanner;
class Piont2  implements Comparable<Piont2>{
	int x,y,h;
	Piont2(int xx,int yy,int hh){
		x=xx;
		y=yy;
		h=hh;
	}
	@Override
	public int compareTo(Piont2 o) {
		return o.x-x;
	}
	
}
public class 免费馅饼 {
	static int n,dp[];
	public static void main(String[] args) {
		Scanner sr=new Scanner(System.in);
		int c=1;
		while((n=sr.nextInt())!=0) {
			Piont2 p[]=new Piont2[6*n];
			dp=new int[6*n];
			for(int i=0;i<n;i++) {
				int v,w,h;
				v=sr.nextInt();
				w=sr.nextInt();
				h=sr.nextInt();
				p[i*6]=new Piont2(v,w,h);
				p[i*6+1]=new Piont2(w,v,h);
				p[i*6+2]=new Piont2(w,h,v);
				p[i*6+3]=new Piont2(h,w,v);
				p[i*6+4]=new Piont2(v,h,w);
				p[i*6+5]=new Piont2(h,v,w);
			}
			Arrays.sort(p);
			//for(int i=0;i<6*n;i++) System.out.println(p[i].x);
			int m=0;
			for(int i=0;i<6*n;i++) {
				dp[i]=p[i].h;
				for(int j=i-1;j>=0;j--) {
					if(p[i].x<p[j].x&&p[i].y<p[j].y) {
						dp[i]=Math.max(dp[i], dp[j]+p[i].h);
					}
				}
				m=Math.max(m, dp[i]);
			}
			System.out.println("Case "+c+": maximum height = "+m);
			//System.out.println(dp[6*n-1]+" "+m);
			c++;
			
		}
		
	}
}

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
scratch猴子香蕉代码是一种基于图形化编程语言的方式,让孩子们能够轻松理解和编写代码。下面是一个用scratch编写的猴子香蕉的简单代码: 首先,我们需要画出猴子香蕉,可以在scratch的绘画区域中使用相应的图形工具进行绘制。 接下来,我们需要设定猴子的初始位置,可以通过把猴子的x和y坐标设定为屏幕中央,使它出现在屏幕正中央。 然后,我们需要设置猴子的行动。我们可以使用一些控制块来实现猴子的行为。比如,使用“当猴子接触到香蕉时”这个事件块,让猴子能够察觉到香蕉的存在。 接下来,在该事件块中,我们可以添加一个“向前移动10步”的动作块,让猴子能够向前移动10个像素。这样,当猴子接触到香蕉时,它将向前移动一小步。 最后,我们还可以在猴子吃到香蕉时,添加一个“播放音效”或者“跳舞”的动作块,以增加乐趣和互动性。 这样,我们的猴子香蕉代码就编写完成了。当我们点击“运行”按钮后,猴子将在屏幕上出现,并且向前移动,直到它接触到香蕉。接触到香蕉后,猴子会执行相应的动作,例如播放音效或跳舞,以增加用户的互动体验。 通过使用scratch猴子香蕉代码,孩子们可以通过简单的拖拉动作块的方式,实现一个有趣的互动场景,提高他们的创造力和逻辑思维能力。这也是scratch这一编程语言的主要目的之一,鼓励儿童学习和参与创作编程。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值