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

图片.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]

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

你可能感兴趣的:(17蓝桥杯竞赛题“承压计算”)