Java学习者论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

恭喜Java学习者论坛(https://www.javaxxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,购买链接:点击进入购买VIP会员
JAVA高级面试进阶视频教程Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程

Go语言视频零基础入门到精通

Java架构师3期(课件+源码)

Java开发全终端实战租房项目视频教程

SpringBoot2.X入门到高级使用教程

大数据培训第六期全套视频教程

深度学习(CNN RNN GAN)算法原理

Java亿级流量电商系统视频教程

互联网架构师视频教程

年薪50万Spark2.0从入门到精通

年薪50万!人工智能学习路线教程

年薪50万!大数据从入门到精通学习路线年薪50万!机器学习入门到精通视频教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程 MySQL入门到精通教程
查看: 542|回复: 0

[算法学习]C语言趣味程序百例精解之JAVA实现(60)组成三个数

[复制链接]
  • TA的每日心情
    开心
    2021-3-12 23:18
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2014-11-20 00:04:54 | 显示全部楼层 |阅读模式
    C语言趣味程序百例精解之java实现(60)组成三个数 :
    题目:
    由1到9这九个数字组成三个3位数,要求成1:2:3的比例,数字不重复。


    解法一:
    1. **  
    2.      * 60.分成三个数  
    3.      */  
    4. public class Test60{
    5.   public static void main(String args[]){
    6.    new Test60().devideIntoThree60();
    7. }
    8.     public void devideIntoThree60() {   
    9.         int count = 0;   
    10.         int n1, n2, n3;   
    11.         for (int a = 1; a <= 9; a++)   
    12.             for (int b = 1; b <= 9; b++)   
    13.                 for (int c = 1; c <= 9; c++)   
    14.                     for (int d = 1; d <= 9; d++)   
    15.                         for (int e = 1; e <= 9; e++)   
    16.                             for (int f = 1; f <= 9; f++)   
    17.                                 for (int g = 1; g <= 9; g++)   
    18.                                     for (int h = 1; h <= 9; h++)   
    19.                                         for (int i = 1; i <= 9; i++)   
    20.                                             if (a + b + c + d + e + f + g + h   
    21.                                                     + i == 45  
    22.                                                     && notEquls(new int[] { a,   
    23.                                                             b, c, d, e, f, g,   
    24.                                                             h, i })) {   
    25.                                                 n1 = a * 100 + b * 10 + c;   
    26.                                                 n2 = d * 100 + e * 10 + f;   
    27.                                                 n3 = g * 100 + h * 10 + i;   
    28.   
    29.                                                 if (2 * n1 == n2   
    30.                                                         && 3 * n1 == n3) {   
    31.                                                     count++;   
    32.                                                     System.out.print(" a=" + a);   
    33.                                                     System.out.print(" b=" + b);   
    34.                                                     System.out.print(" c=" + c);   
    35.                                                     System.out.print(" d=" + d);   
    36.                                                     System.out.print(" e=" + e);   
    37.                                                     System.out.print(" f=" + f);   
    38.                                                     System.out.print(" g=" + g);   
    39.                                                     System.out.print(" h=" + h);   
    40.                                                     System.out.println(" i="  
    41.                                                             + i);   
    42.                                                     System.out.println("n1="  
    43.                                                             + n1 + " n2=" + n2   
    44.                                                             + " n3=" + n3);   
    45.                                                 }   
    46.                                             }   
    47.         System.out.println("count=" + count);   
    48.   
    49.     }   
    50.    /**  
    51.      * 判断是否两两不相等  
    52.      */  
    53.     public boolean notEquls(int[] a) {   
    54.         if (a == null || a.length == 0 || a.length == 1)   
    55.             return true;   
    56.         for (int i = 0; i < a.length; i++) {   
    57.             for (int j = i; j < a.length; j++) {   
    58.                 if (a[i] == a[j] && i != j) {   
    59.                     // System.out.println("a[" + i + "]" + a[i] + " a[" + j +   
    60.                     // "]"   
    61.                     // + a[j] + "---");   
    62.                     return false;   
    63.                 }   
    64.             }   
    65.         }   
    66.         return true;   
    67.     }   
    68. }
    69. C:at>java   Test60
    70. a=1 b=9 c=2 d=3 e=8 f=4 g=5 h=7 i=6
    71. n1=192 n2=384 n3=576

    72. a=2 b=1 c=9 d=4 e=3 f=8 g=6 h=5 i=7
    73. n1=219 n2=438 n3=657

    74. a=2 b=7 c=3 d=5 e=4 f=6 g=8 h=1 i=9
    75. n1=273 n2=546 n3=819

    76. a=3 b=2 c=7 d=6 e=5 f=4 g=9 h=8 i=1
    77. n1=327 n2=654 n3=981
    78. count=4
    79. 解法二
    80. public class Test601{
    81.   public static void main(String args[]){
    82.      new Test601().OneTwoThree();
    83.      }
    84.    public void OneTwoThree(){
    85.       int count=0;
    86.       for(int m=123;m<=333;m++){
    87.          
    88.          if(ok(m,2*m,3*m)){
    89.             System.out.printf("No%d:%d %d %d
    90. ",++count,m,2*m,3*m);
    91.          }
    92.       }
    93.    }
    94.    public boolean ok(int a,int b,int c){
    95.        int x[]=f(a);
    96.        int y[]=f(b);
    97.        int z[]=f(c);
    98.        int w[]={x[0],x[1],x[2],y[0],y[1],y[2],z[0],z[1],z[2]};
    99.       return notEquls(w);
    100.     }
    101.     public int[] f(int n){//求n的各位数字。
    102.       int i=0;
    103.      int a[]=new int[3];
    104.      while(n!=0){
    105.        a[i++]=n%10;
    106.        n=n/10;
    107.      }
    108.      return a;
    109.     }
    110.      /**  
    111.      * 判断是否两两不相等或有0
    112.      */  
    113.     public boolean notEquls(int[] a) {   
    114.         if (a == null || a.length == 0 || a.length == 1)   
    115.             return true;   
    116.         for (int i = 0; i < a.length; i++) {   
    117.                if(a[i]==0) return false;
    118.             for (int j = i; j < a.length; j++) {   
    119.                 if (a[i] == a[j] && i != j) {   
    120.                   
    121.                     return false;   
    122.                 }   
    123.             }   
    124.         }   
    125.         return true;   
    126.     }   
    127. }
    复制代码
    运行结果:
    C:java>java Test601
    No1:192 384 576
    No2:219 438 657
    No3:273 546 819
    No4:327 654 981   
       
         
         
          
          

            
          

            
          
         
       

      


    源码下载:http://file.javaxxz.com/2014/11/20/000454437.zip
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|Java学习者论坛 ( 声明:本站资料整理自互联网,用于Java学习者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2025-2-25 04:31 , Processed in 0.294135 second(s), 36 queries .

    Powered by Discuz! X3.4

    © 2001-2017 Comsenz Inc.

    快速回复 返回顶部 返回列表