zoukankan      html  css  js  c++  java
  • 穷举练习


    我国古代数学家张邱建在《算经》中出了一道“百钱买白鸡”的问题,题意是这样的:5文钱可以买一只公鸡,3文钱可以买一只母鸡,1文钱可以买3只雏鸡。现在用100文钱买100只鸡,那么各有公鸡、母鸡、雏鸡多少只?请编写程序实现。

    //百钱白鸡            
        
                for(int cock =0;cock<21;cock++ )      //公鸡cock循环条件,最多20只
                    for(int hen =0;hen<34;hen++){       //母鸡hen循环条件,最多33只
                        for(int chick =0;chick<101;chick+=3){    //雏鸡chick循环条件,最多100只,每次循环+3
                            if((cock+hen+chick)== 100 && (cock*5+hen*3+chick/3)==100)  //要同时满足百钱白鸡
                            System.out.println("用100文钱买100只鸡,公鸡:"+cock+"只 "+" 母鸡"+hen+"只 "+" 雏鸡"+chick+"只");
                                }    

    错误示范:    注意!题中是一文钱3只雏鸡

                int cock =5;int hen =3;int chick =1;
                for(int t =0; t<100;t+=9 ){
                    cock+=5;
                    hen+=3;
                    chick++;
                    t =cock+hen+chick;
                    System.out.println("公鸡:"+cock+"只 "+" 母鸡"+hen+"只 "+" 雏鸡"+chick+"只");
                    System.out.println("要花费"+t+"钱");
                    if(t==99){
                        chick++;
                    }
                }            
                System.out.println("用100文钱买100只鸡,公鸡:"+cock+"只 "+" 母鸡"+hen+"只 "+" 雏鸡"+chick+"只");
        
                    


    题目:打印出所有的 "水仙花数 ",所谓 "水仙花数 "是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个 "水仙花数 ",因为153=1的三次方+5的三次方+3的三次方。

                int a =1;
                for(int y =1;y<=9;y++){
                    for(int e =0;e<=9;e++){
                        for(int s =0;s<=9;s++){
                            if ((y*y*y+e*e*e+s*s*s)==(y*100+e*10+s*1)){
                        a++;
                        System.out.println("水仙花数第"+a+"个是"+(y*100+e*10+s));
    
                            }
                        }
                    }
                }

     修改后正确做法:

            for(int a=1;a<=9;a++)            //百位上的数的循环条件
                for(int b=0;b<=9;b++)         //十位上的数的循环条件
                    for(int c=0;c<=9;c++){        //个位上的数的循环条件
                        int m=(a*100+b*10+c);      //定义m=循环条件产生的某个三位数
                            int    n=(a*a*a+b*b*b+c*c*c);   //定义n=循环条件产生的各个数的立方和
                            if(m!=n)                //当m!=n的值,表示该数不是水仙花数
                                continue;          //进行下一次循环
                            /*
                             * 也可以写  if(m==n) 直接输出m或者n的值
                             */
                            System.out.println("水仙花数有:"+m);
                    }



    这是经典的"百马百担"问题,有一百匹马,驮一百担货,大马驮3担,中马驮2担,两只小马驮1担,问有大,中,小马各几匹?

    //第一种方法:    
    for(int x=1;x<100;x++){ //大马x获取从1~100的数 for(int y=1;y<100;y++){ //中马 y int z=100-x-y; //小马z变量 if(z%2==0){ //z值要为偶数,2只小马驼一担 if((3*x+2*y+z/2)==100){ //大马+中马+小马驼货的和 System.out.println("百马百担:大马"+x+"中马"+y+"小马"+z); } } } } //第二种方法: for(int i=0;i<34;i++) //大马最多33匹 for(int j=0;j<51;j++) //中马最多50匹 for(int k=0;k<101;k+=2) //小马驹最多100匹 { if ((i*3+j*2+k/2)==100 & (i+j+k)==100) //判断货物的数量和马的数量,是否=100 System.out.println("百马百担,大马"+i+"匹,中马"+j+"匹,小马"+k+"匹。" ); }

     


     

    //错误示范:不要理解错题意
    int dm =3;int zm =2;int xm =1; for(int hw =0;hw <=100;hw +=6){ dm +=3; zm +=2; xm ++; hw = dm+zm+xm; System.out.println("大马"+dm+"中马"+zm+"小马"+xm); System.out.println("货物"+hw); }
  • 相关阅读:
    Webpack 如何在每次构建之前自动清理构建目录
    Webpack 代码压缩 js、CSS、HTML压缩
    Webpack 三种文件指纹策略 js、css、图片字体资源的指纹设置
    Webpack热更新以及原理分析 webpack-dev-server与webpack-dev-middleware WDS WDM
    Webpack中的文件监听 watch配置实时更新
    【神经网络结构搜索】DNA: Block-wisely Supervised NAS with KD
    DeiT:使用Attention蒸馏Transformer
    ECCV20 BigNAS无需后处理直接部署
    实现数据逻辑与业务的解耦,模板文件填入你需要的数据,框架自动去请求相关数据
    推荐一个离线应用框架-lcache.js
  • 原文地址:https://www.cnblogs.com/sjxx/p/5103987.html
Copyright © 2011-2022 走看看