黑马程序员技术交流社区

标题: 刚解开一道 面试题 ,好开心。 [打印本页]

作者: iori    时间: 2016-1-14 20:42
标题: 刚解开一道 面试题 ,好开心。
//有1,2,3,4  个数字,问能组成多少个互不相同且无重复数字的三位数。,都是多少。
代码如下:
public class Test1 {
        public static void main(String[] args) {
                        int count =0;
                for(int x=100;x<1000;x++){
                        int ge = x%10;
                        int shi = (x/10)%10;
                        int bai = x/100;
                       
                        if(((ge != shi) && (ge != bai)) && (shi!=bai)){
                                        if(((ge<=4)&&(shi<=4))&&(bai<=4)){
                                                System.out.println(x);
                                                count++;
                                }
                        }
        }
                System.out.println(count);
        }
}


作者: 心语来了    时间: 2016-1-14 20:52
赞个    加油   看了你的代码 我也涨姿势了
作者: 黑色皮肤的马    时间: 2016-1-14 21:26
谢谢大神分享,涨姿势了
作者: 胆小的狙击手    时间: 2016-1-14 21:38
这个算法确实比较简单,学到了,谢谢分享
作者: heima7788    时间: 2016-1-14 22:21
学到知识了
作者: cqs2515    时间: 2016-1-14 22:37
谢谢,学习了
作者: wx_UgpPONsV    时间: 2016-1-14 22:45
666666666666666666666666666666
作者: 二五仔    时间: 2016-1-14 23:09
66666666666666..........
作者: z195061    时间: 2016-1-14 23:44
居然还能这样
作者: 西葫芦虾仁    时间: 2016-1-14 23:56
不是很懂……可以详细给讲一讲么
作者: pengjk    时间: 2016-1-15 00:14
真是醉了
作者: 愿随风丶飘雪    时间: 2016-1-15 01:12
这个题不是使用选择排序的方法做吗?
作者: zhuyapeng    时间: 2016-1-15 07:46
水仙花数  面试出现的几率挺高的
作者: qt520    时间: 2016-1-15 08:14
学习了,原来能这么做
作者: Forwhat    时间: 2016-1-15 11:42
那俩if判断语句括号是不是有点多余啊,这样写不行么(ge != shi) && (ge != bai) && (shi!=bai)
作者: 迷茫不堪的年纪    时间: 2016-1-15 21:39
内循环应该可以是  1  2 3 4  吧
  if(((ge<=4)&&(shi<=4))&&(bai<=4)){
作者: zhanganping    时间: 2016-1-15 22:02
谢谢分享,
作者: rushing    时间: 2016-1-15 22:08
满眼都是括号。。。
作者: L-J    时间: 2016-1-15 23:28
学习了,原来海纳鞥这样做

作者: 纤路    时间: 2016-1-15 23:30
果断收藏
作者: jacky左    时间: 2016-1-15 23:56
class Test {
        public static void main(String[] args) {
//有1,2,3,4  个数字,问能组成多少个互不相同且无重复数字的三位数。,都是多少
                String[] str1 = {"1","2","3","4"};
                String[] str2 = str1;
                String[] str3 = str1;
                int count = 0;

                for(int i=0;i<str1.length;i++){
                        for(int j=0;j<str2.length;j++){
                                for(int k=0;k<str3.length;k++){
                                        if(i!=j && j != k && k != i){
                                                System.out.println(str1[i]+str2[j]+str3[k]);
                                                count++;
                                        }
                                }
                        }
               
                }
                System.out.println("总共有"+count+"个");
        }
}

作者: tujiu888    时间: 2016-1-16 01:15
public class Test1 {
        public static void main(String[] args) {
                        int count =0;
                for(int x=100;x<1000;x++){
                        int ge = x%10;
                        int shi = (x/10)%10;
                        int bai = x/100;
                        
                        if(((ge != shi) && (ge != bai)) && (shi!=bai)){
                                        if(((ge<=4 && ge > 0)&&(shi<=4 && shi > 0))&&(bai<=4 && bai > 0)){
                                                System.out.println(x);
                                                count++;
                                }
                        }
        }
                System.out.println(count);
        }
}

还是给你修改下吧
作者: tujiu888    时间: 2016-1-16 01:16
三位数 是1 2 3 4 而不是 0 1 2 3 4
作者: iori    时间: 2016-1-16 13:42
额,这样啊,好不容易做出一道 面试题 ,太得意了,忘了0了
作者: wxw19910324    时间: 2016-1-16 13:56
谢谢分享! 加油
作者: 549208564    时间: 2016-1-16 21:26
看了半天,没看懂是什么意思,能私密分享一下吗
作者: StringBOX    时间: 2016-1-16 23:39
别开心的太早哦,程序有误,if(((ge<=4)&&(shi<=4))&&(bai<=4))这里应该改成if(ge<=4 && shi<=4 && bai<=4 && ge * shi * bai !=0),请看题目,审题啊。。。。。
作者: pllaoyao    时间: 2016-1-17 00:12
66666666666666666666666666
作者: szl77777    时间: 2016-1-17 00:30
一起思考一起学习
作者: fury1994    时间: 2016-1-17 11:20
给力~~~~~~~~~~~
作者: 15000183754    时间: 2016-1-17 19:07
加油吧!
作者: yi651312197    时间: 2016-1-17 21:26
学习了。
作者: zhangka001    时间: 2016-1-17 21:39
厉害!!!
作者: zhangka001    时间: 2016-1-17 21:47
运行了一下,怎么不对呀
作者: YukiChan    时间: 2016-1-19 13:23
C语言中经常出现的水仙花数,JAVA学习中
作者: fury1994    时间: 2016-1-19 19:40
~~~~~~~~~~~~~~~~·
作者: yi651312197    时间: 2016-1-25 21:48
  1. public class t {
  2.     public static void main(String[] args) {

  3.             int i,j,k,count=0;
  4.             for(i=1;i<=4;i++){
  5.                      for(j=1;j<=4;j++){
  6.                              for(k=1;k<=4;k++){
  7.                                      if(i!=j && j!=k && i!=k) {
  8.                                              System.out.print(i*100+j*10+k+" ");
  9.                                              count++;
  10.                                      }
  11.                              }
  12.                      }
  13.             }
  14.             System.out.println();
  15.             System.out.println(count+"个");
  16.     }
  17. }
复制代码

和楼主分享经验
作者: 四夕    时间: 2016-1-25 21:54
Forwhat 发表于 2016-1-15 11:42
那俩if判断语句括号是不是有点多余啊,这样写不行么(ge != shi) && (ge != bai) && (shi!=bai) ...

题目是1 2 3 4组成的数字
作者: 西贝    时间: 2016-1-25 22:29
谢谢分享,学习了
作者: 西贝    时间: 2016-1-25 22:36
zhuyapeng 发表于 2016-1-15 07:46
水仙花数  面试出现的几率挺高的

这不是水仙花数好么!水仙花数是正向思维,这个是逆向思维,有难度,如果笔试时来一道这样的题目,果断跪了
作者: 西贝    时间: 2016-1-25 23:22
//正向思维想出一种新算法,大家看看对不对,看看执行效率哪个更好

class FetchNum {
                int a,b,c,i,j,k,count=0;
            int s[]=new int [100];
                        public void fetchNum() {
                                for (i=1;i<=4;i++){
                                        for (j=1;j<=4;j++){
                                                for (k=1;k<=4;k++){
                            if (i!=j&&i!=k&&j!=k){
                               s[count]=i*100+j*10+k;
                                System.out.print(s[count]+" \t");
                                count++;
                            }
                                                }
                    }
                }  
                                System.out.println("--------------------------------------------------------------------------------");
                                System.out.println(count);
                                System.out.println("--------------------------------------------------------------------------------");

                            for (i=0;i<count;i++){
                                        System.out.print(s[i]+"\t ");
                                }
                        }
}


作者: 西贝    时间: 2016-1-25 23:26
yi651312197 发表于 2016-1-25 21:48
和楼主分享经验

握手,和我想的一样,话说卡看到第一想法就是采用for循环
作者: 西贝    时间: 2016-1-25 23:27
jacky左 发表于 2016-1-15 23:56
class Test {
        public static void main(String[] args) {
//有1,2,3,4  个数字,问能组成多少个互不相 ...

碉堡,有想法,我怎么就没想到呢
作者: Mayer    时间: 2016-1-26 12:59
谢谢分享,会了
作者: 15856681986    时间: 2016-1-26 19:45
谢谢分享
作者: liuxiaoye    时间: 2016-1-26 20:40
学习了,谢谢
作者: Hi大智    时间: 2016-1-26 21:18
最后一个一共有几个结果
作者: zhenufo    时间: 2016-1-26 21:43
果断收藏学习
作者: yehua1026    时间: 2016-1-26 21:47
棒棒哒!!
作者: Forwhat    时间: 2016-1-27 12:10
四夕 发表于 2016-1-25 21:54
题目是1 2 3 4组成的数字

if(((ge != shi) && (ge != bai)) && (shi!=bai))这个写成这样if((ge != shi) && (ge != bai)) && (shi!=bai))不更简单么?多余的括号也是浪费啊。。。。
作者: z4951061    时间: 2016-1-27 12:49
那个百分号看的有点晕
作者: 李杜    时间: 2016-1-27 12:50
不错 学习了
作者: Murphye    时间: 2016-1-28 10:21
最好加上注释哦
作者: 星空仰望heaven    时间: 2016-2-3 19:13
不错不错 点个赞
作者: Mayer    时间: 2016-2-3 23:56
有没有别的题,也分享分享
作者: ChiCaoMa    时间: 2016-2-6 09:04
要洗~~不错不错--
作者: strongflyer    时间: 2016-2-6 11:59
66666666666666
作者: zjgonghan    时间: 2016-2-6 23:17
我也回去试试去~
作者: DDK畅    时间: 2016-2-10 07:00
66666666666666666
作者: shiax11    时间: 2016-2-10 07:43
谢谢 学习了
作者: vcmq    时间: 2016-2-10 09:23
学习学习,{:2_32:}
作者: 嘉荫    时间: 2016-2-10 15:32
学知识了,加油楼主
作者: Android666    时间: 2016-2-10 22:04
涨姿势,感谢分享

作者: boboyuwu    时间: 2016-2-10 22:18
有点复杂写的。。。。我写的
class MianShiDemo1
{
        public static void main(String []args) {
           ArrayList al=new ArrayList();
           int i,j,k;
       for(i=1;i<5;i++)
                   for(j=1;j<5;j++)
                      for(k=1;k<5;k++)
                {
                    int num=0;
                    if(i!=j&i!=k&j!=k) {
            num=i*100+j*10+k;
                        }
            if(!al.contains(num)&num!=0) {
               al.add(num);
                        }
                }
      
         System.out.print(al);
        }
}
作者: 1900    时间: 2016-2-10 23:23
学习学习
作者: 苗超维    时间: 2016-2-12 00:56
666666666666666666
作者: 苗超维    时间: 2016-2-12 01:36
int[] a={1,2,3,4};
     int[] b = {0,0,0};
     Set<Integer> c= new HashSet<>();
     for (int i = 0; i < a.length; i++) {
                b[0]=a[i];
                for (int j = 0; j < a.length; j++) {
                   if (a[j]!=a[i]) {
                                b[1]=a[j];
                                for (int j2 = 0; j2 < a.length; j2++) {
                                        if(a[j2]!=a[j]&&a[j2]!=a[i]) {
                                                b[2]=a[j2];
                                       
                                               
                                                String d=b[0]+""+""+b[1]+""+b[2]+"";
                                                System.out.println(d);
                                                c.add(Integer.valueOf(d.trim()));
                                        }
                                }
                        }
                }
               
        }
        System.out.println(c);
作者: hexinchun    时间: 2016-2-12 21:48
学习力 都是大神啊
作者: a373033860    时间: 2016-2-12 23:14
谢大神分享,涨姿势了
作者: 1178988315    时间: 2016-2-13 00:05
学习了。。。。。。。。。。。。。
作者: 独行浪子    时间: 2016-3-5 10:23
66666666666
作者: huanlong579    时间: 2016-3-5 11:08
基础题,3个循环,最后一个判断,i!=k&& k!=j && j!=i  判断是最关键的
作者: suwen10    时间: 2016-3-7 21:24
厉害,不走寻常路,理解简单
作者: 洋葱头头    时间: 2016-3-7 22:05
顶一个 好赞啊
作者: 独行浪子    时间: 2016-3-8 10:55
谢谢,学习了
作者: youngrivers    时间: 2016-3-8 14:46
命名尽量统一!
作者: lixianjun    时间: 2016-3-8 21:11
老师和同学都付出了很多,共同努力的成果!加油啊!奋斗6个月




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2