• 暴力


    题目

    复制代码
    /*
    凑算式
    
         B      DEF
    A + --- + ------- = 10
         C      GHI
         
    (如果显示有问题,可以参见【图1.jpg】)
         
         
    这个算式中A~I代表1~9的数字,不同的字母代表不同的数字。
    
    比如:
    6+8/3+952/714 就是一种解法,
    5+3/1+972/486 是另一种解法。
    
    这个算式一共有多少种解法?
    
    注意:你提交应该是个整数,不要填写任何多余的内容或说明性文字。
    */
    复制代码

    图1

    答案

    29

    代码

    复制代码
     1 public class Main {
     2     public static void main(String[] args) {
     3         //实现 元素都不相同的全排列 简单的方法可以用暴力破解的方法 只要把循环中有重复数字的结果剔除就可以
     4         int a, b, c, d, e, f, g, h, i, s=0;
     5         for(a=1;a<10;a++){
     6         for(b=1;b<10;b++){
     7         if(b==a) continue;
     8         for(c=1;c<10;c++){
     9         if(c==a||c==b) continue;
    10         for(d=1;d<10;d++){
    11         if(d==a||d==b||d==c) continue;
    12         for(e=1;e<10;e++) {
    13         if(e==a||e==b||e==c||e==d) continue;
    14         for(f=1;f<10;f++){
    15         if(f==a||f==b||f==c||f==d||f==e) continue;
    16         for(g=1;g<10;g++){
    17         if(g==a||g==b||g==c||g==d||g==e||g==f) continue;
    18         for(h=1;h<10;h++){
    19         if(h==a||h==b||h==c||h==d||h==e||h==f||h==g) continue;
    20         for(i=1;i<10;i++){
    21             if(i==a||i==b||i==c||i==d||i==e||i==f||i==g||i==h) continue;
    22             //其中要注意的是,两个整数相除得到的还是整数,所以要把其中一个整数先乘以 1.0 转化成浮点数 (建议乘在分子上,因为计算顺序不容易出错)
    23             double num = a + b*1.0/c + (100*d+10*e+f)*1.0/(100*g+10*h+i)-10;
    24             if(num==0) {
    25                 s++; 
    26                 //下面会显示结果项 
    27                 /*System.out.println("     "+b+"      "+d+""+e+""+f+"");
    28                 System.out.println(""+a+" + --- + ------- = 10");
    29                 System.out.println("     "+c+"      "+g+""+h+""+i+"");
    30                 System.out.println(a+"   "+b*1.0/c+"     "+(100*d+10*e+f)*1.0/(100*g+10*h+i));
    31                 System.out.println();
    32                 System.out.println();*/
    33             }
    34         }
    35         }
    36         }
    37         }
    38         }
    39         }
    40         }
    41         }
    42         }
    43         System.out.println(s);
    44     }
    45 }
    复制代码

    注释

    就本题目而言用暴力破解会更省事一点,其中要注意的一个小问题就是,整数相除得整数,要细心一点。

  • 相关阅读:
    git —— 远程仓库(操作)
    git —— 远程仓库(创建)
    git —— 异常1,index.lock
    git —— 基本命令以及操作(No.1)
    爬虫练习二(拉勾网投递简历)
    知识点拾忆(一)
    爬虫练习一(爬取笑话集)
    metaclass元类解析
    正则表达式re.S的用法
    requests模块
  • 原文地址:https://www.cnblogs.com/Z-D-/p/6636959.html
Copyright © 2020-2023  润新知