美文网首页
17蓝桥杯竞赛题“承压计算”

17蓝桥杯竞赛题“承压计算”

作者: ZaleJ | 来源:发表于2018-01-29 14:54 被阅读0次
    图片.png

    这个题。。额。。我的大致思路就是把上部分的每个砖块质量分一半,然后加在下一层的砖块上,一直加到最后一层,再根据最大和最小的关系算个比例,求出最大压力

    
    
    public class JAVA17_3 {
        public static String formatFloatNumber(Double value) {
            if(value != null){
                if(value.doubleValue() != 0.00){
                    java.text.DecimalFormat df = new java.text.DecimalFormat("########.00");
                    return df.format(value.doubleValue());
                }else{
                    return "0.00";
                }
            }
            return "";
        }
    
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            double[][] allNum = new double[30][30];
            String string =
                    "                             7 Z" + 
                    "                            5 8 Z" + 
                    "                           7 8 8 Z" + 
                    "                          9 2 7 2 Z" + 
                    "                         8 1 4 9 1 Z" + 
                    "                        8 1 8 8 4 1 Z" + 
                    "                       7 9 6 1 4 5 4 Z" + 
                    "                      5 6 5 5 6 9 5 6 Z" + 
                    "                     5 5 4 7 9 3 5 5 1 Z" + 
                    "                    7 5 7 9 7 4 7 3 3 1 Z" + 
                    "                   4 6 4 5 5 8 8 3 2 4 3 Z" + 
                    "                  1 1 3 3 1 6 6 5 5 4 4 2 Z" + 
                    "                 9 9 9 2 1 9 1 9 2 9 5 7 9 Z" + 
                    "                4 3 3 7 7 9 3 6 1 3 8 8 3 7 Z" + 
                    "               3 6 8 1 5 3 9 5 8 3 8 1 8 3 3 Z" + 
                    "              8 3 2 3 3 5 5 8 5 4 2 8 6 7 6 9 Z" + 
                    "             8 1 8 1 8 4 6 2 2 1 7 9 4 2 3 3 4 Z" + 
                    "            2 8 4 2 2 9 9 2 8 3 4 9 6 3 9 4 6 9 Z" + 
                    "           7 9 7 4 9 7 6 6 2 8 9 4 1 8 1 7 2 1 6 Z" + 
                    "          9 2 8 6 4 2 7 9 5 4 1 2 5 1 7 3 9 8 3 3 Z" + 
                    "         5 2 1 6 7 9 3 2 8 9 5 5 6 6 6 2 1 8 7 9 9 Z" + 
                    "        6 7 1 8 8 7 5 3 6 5 4 7 3 4 6 7 8 1 3 2 7 4 Z" + 
                    "       2 2 6 3 5 3 4 9 2 4 5 7 6 6 3 2 7 2 4 8 5 5 4 Z" + 
                    "      7 4 4 5 8 3 3 8 1 8 6 3 2 1 6 2 6 4 6 3 8 2 9 6 Z" + 
                    "     1 2 4 1 3 3 5 3 4 9 6 3 8 6 5 9 1 5 3 2 6 8 8 5 3 Z" + 
                    "    2 2 7 9 3 3 2 8 6 9 8 4 4 9 5 8 2 6 3 4 8 4 9 3 8 8 Z" + 
                    "   7 7 7 9 7 5 2 7 9 2 5 1 9 2 6 5 3 9 3 5 7 3 5 4 2 8 9 Z" + 
                    "  7 7 6 6 8 7 5 5 8 2 4 7 7 4 7 2 6 9 2 1 8 2 9 8 5 7 3 6 Z" + 
                    " 5 9 4 5 5 7 5 5 6 3 5 3 9 5 8 9 5 4 1 2 6 1 4 3 5 3 2 4 1 Z" + 
                    "X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X ";
            
            int tag1 = 0;
            int tag2 = 0;
            for(int i = 0; i < string.length(); i++) {
                if(string.charAt(i) > '0' && string.charAt(i) <= '9') {
                    allNum[tag1][tag2] = Integer.parseInt(string.charAt(i)+"");
                    tag2++;
                }
                if(string.charAt(i)=='Z') {
                    tag1++;
                    tag2=0;
                }
            }
            
            double halfPower=0;
            for(int i = 1; i < 29; i++) {
                for(int j = 1; j <= i; j++) {
                    halfPower = allNum[i-1][j-1]/2.0;
                    allNum[i][j-1]+=halfPower;
                    allNum[i][j] += halfPower;
                }
            }
            
            
            double MIN = Double.MAX_VALUE;
            double MAX = Double.MIN_VALUE;
            for(int i = 0; i < 29; i++) {
                if (allNum[28][i]>MAX) {
                    MAX = allNum[28][i];
                }
                if (allNum[28][i]<MIN) {
                    MIN = allNum[28][i];
                }
            }
            
            
            System.out.print(formatFloatNumber(2086458231*MAX/MIN));
            
    //      for(double[] e:allNum) {
    //          for(double r:e) {
    //              System.out.print(r);
    //          }
    //      }
            
            
            
        }
    
    }
    
    

    最后得出结果是36668144240.00, 应该是对的

    相关文章

      网友评论

          本文标题:17蓝桥杯竞赛题“承压计算”

          本文链接:https://www.haomeiwen.com/subject/eshxzxtx.html