zoukankan      html  css  js  c++  java
  • Java实现第九届蓝桥杯耐摔指数

    耐摔指数

    题目描述

    x星球的居民脾气不太好,但好在他们生气的时候唯一的异常举动是:摔手机。
    各大厂商也就纷纷推出各种耐摔型手机。x星球的质监局规定了手机必须经过耐摔测试,并且评定出一个耐摔指数来,之后才允许上市流通。

    x星球有很多高耸入云的高塔,刚好可以用来做耐摔测试。塔的每一层高度都是一样的,与地球上稍有不同的是,他们的第一层不是地面,而是相当于我们的2楼。

    如果手机从第7层扔下去没摔坏,但第8层摔坏了,则手机耐摔指数=7。
    特别地,如果手机从第1层扔下去就坏了,则耐摔指数=0。
    如果到了塔的最高层第n层扔没摔坏,则耐摔指数=n

    为了减少测试次数,从每个厂家抽样3部手机参加测试。

    如果已知了测试塔的高度,并且采用最佳策略,在最坏的运气下最多需要测试多少次才能确定手机的耐摔指数呢?

    输入数据,一个整数n(3<n<10000),表示测试塔的高度。
    输出一个整数,表示最多测试多少次。

    例如:
    输入:
    3

    程序应该输出:
    2

    解释:
    手机a从2楼扔下去,坏了,就把b手机从1楼扔;否则a手机继续3层扔下

    再例如:
    输入:
    7

    程序应该输出:
    3

    解释:
    a手机从4层扔,坏了,则下面有3层,b,c 两部手机2次足可以测出指数;
    若是没坏,手机充足,上面5,6,7 三层2次也容易测出。

    资源约定:
    峰值内存消耗(含虚拟机) < 256M
    CPU消耗 < 1000ms

    请严格按要求输出,不要画蛇添足地打印类似:“请您输入…” 的多余内容。

    所有代码放在同一个源文件中,调试通过后,拷贝提交该源码。
    不要使用package语句。不要使用jdk1.7及以上版本的特性。
    主类的名字必须是:Main,否则按无效代码处理。


    笨笨有话说:
    我觉得3个手机太难了,要是2个手机还可以考虑一下。

    歪歪有话说:
    想什么呢,你!要是1部手机还用你编程啊?那样的话只好从下往上一层一层测。

    PS:
    1、动态规划,化繁为简。
    2、先假设只有两个手机那么最佳策略便是1+2+3+4+5+…+i>=n。即扔i次可以测出结果。
    3、因为有三个手机所以用数组保存两个手机的结果;x[0]+x[1]+x[2]+…x[i],>=n.即扔k次可以测出结果。

    //java代码
    	public static void main(String[] args){
    		Scanner sc=new Scanner(System.in);
    		int n=sc.nextInt();
    		int [] x=new int [1000];
    		int sum=1;
    		for(int i=0;sum<n;i++){
    			sum=i+sum;
    			x[i]=sum;
    		}
    		sum=1;
    		int k=0;
    		for(int i=0;sum<n;i++){
    			sum=x[i]+sum;
    			k++;
    		}
    		System.out.println(k);
    	}```
    
    
    

    不懂得话可以看一下这个

  • 相关阅读:
    POJ 1681 Painter's Problem(高斯消元法)
    HDU 3530 Subsequence(单调队列)
    HDU 4302 Holedox Eating(优先队列或者线段树)
    POJ 2947 Widget Factory(高斯消元法,解模线性方程组)
    HDU 3635 Dragon Balls(并查集)
    HDU 4301 Divide Chocolate(找规律,DP)
    POJ 1753 Flip Game(高斯消元)
    POJ 3185 The Water Bowls(高斯消元)
    克琳:http://liyu.eu5.org
    WinDbg使用
  • 原文地址:https://www.cnblogs.com/a1439775520/p/13077610.html
Copyright © 2011-2022 走看看