算法
写个算法从1-10个数中,随机抽取五个数,这5个数前后不能重复,并求出时间复杂度。
要用单纯的算法,不能借助数据结构。
我记得上学的时候学过概率,遇到过这样的问题,现在似乎有点望了。编程题
请编写一个数据结构,足够长的长整型,可以存储足够大的Long型的int

解决方案 »

  1.   

    时间复杂度是0(5)吧  算法可以写个线性表存int或者long就像List不过要提供转换ing  long类型的方法
      

  2.   

    第二题可以用我昨天学到的方法,就是用数组存,
    比如123,可以存储为 int[] a = {1,2,3};
    123 + 456  
    int[] a = {1,2,3};
    int[] b = {4,5,6};
    int[] c = add(a, b) = {5,7,9};
    就是将你要存储的长数切成可以存储的短数,只要短数之间保证联系能够恢复到长数就可以了
      

  3.   

    这个能实现第1题的功能,不过方式不太好,你可以再去改进。        int num = (int)(Math.random()*10+1);
            String result = "" + String.valueOf(num) + ",";
            String temp = "";
            boolean boo = true;
            int count = 1;
            while (boo){
                temp = result;
                boolean flag = true;
                boolean isExist = false;
                num = (int)(Math.random()*10+1);
                System.out.println("生成的随机数为:" + num);
                int b = 0;
                String str = "";
                while(flag){
                    if(temp.indexOf(",") != -1){
                        b = temp.indexOf(",");
                        str = temp.substring(0 ,b);                    if(!str.equals(String.valueOf(num))){
                            temp = temp.substring(b + 1,temp.length());
                        }else{
                            isExist = true;
                            break;
                        }
                    }else{
                        flag = false;
                    }
                }
                if(!isExist){
                    result = result + String.valueOf(num) + ",";
                    count++;
                }
                //如果够5个数了,则退出
                if(count == 5){
                    break;
                }
            }
            System.out.println("生成的5个不重复的随机数串是:" + result);