A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 七弦 中级黑马   /  2014-5-24 21:37  /  6685 人查看  /  26 人回复  /   1 人收藏 转载请遵从CC协议 禁止商业使用本文

有任意一个5位数,如:34256,
把它的各位数字打乱,重新排列,就可得到一个最大的数:65432,还有一个最小的数23456。
求这两个数字的差,得:41976,
然后把这个数字再次重复上述过程(如果不足5位,则前边补0)。
如此往复,数字会落入某个循环圈(称为数字黑洞)。
比如,刚才的数字会落入:[82962, 75933, 63954, 61974] 这个循环圈。

请编写程序,找到5位数所有可能的循环圈,并输出,每个循环圈占1行。其中5位数全都相同则循环圈为 [0],这个可以不考虑。循环圈的输出格式仿照:
[82962, 75933, 63954, 61974]
其中数字的先后顺序可以不考虑。


谁来解答!思路要清晰!!

评分

参与人数 1技术分 +1 收起 理由
黑妞~ + 1

查看全部评分

26 个回复

正序浏览
  1. import java.util.TreeSet;

  2. public class Test {

  3.         public static void main(String[] args) {
  4.                 // TODO Auto-generated method stub
  5.                 TreeSet<String> blackHoleList = BlackHole(0, 100000);
  6.                 // System.out.println(blackHoleList.size());
  7.                 for (String tree : blackHoleList) {
  8.                         System.out.println(tree);
  9.                 }
  10.         }

  11.         /**
  12.          * 输出一个储存数字黑洞TreeSet的ArrayList
  13.          *
  14.          * @param from
  15.          * @param end
  16.          * @return
  17.          */
  18.         public static TreeSet<String> BlackHole(int from, int end) {
  19.                 TreeSet<String> blackHoleList = new TreeSet<String>();
  20.                 // 建立一个角标从0-99999的boolean型数组
  21.                 boolean[] numList = new boolean[end];
  22.                 // 对数组进行遍历
  23.                 for (int i = from; i < numList.length; i++) {
  24.                         // 判断当前角标的数字是否已经在某个数字黑洞中
  25.                         if (numList[i]) {
  26.                                 continue;
  27.                         }
  28.                         // 建立储存数字黑洞的TreeSet
  29.                         TreeSet<Integer> numTemp = new TreeSet<Integer>();
  30.                         TreeSet<Integer> numTempArray = new TreeSet<Integer>();
  31.                         // 从大小为i的数字开始 计算其重组后的数的最大值和最小值的差值
  32.                         int reverseNum = i;

  33.                         int count = 0;
  34.                         // 通过while循环将遍历到的数及由其计算出的差值数存入一个TreeSet中
  35.                         while (count < numTemp.size() * 2 + 1) {
  36.                                 // 当再次向numTemp树中存入已有的数时返回false,于是进入if区域内,将该值存入numTempArray这个TreeSet中
  37.                                 if (!numTemp.add(reverseNum)) {
  38.                                         numTempArray.add(reverseNum);
  39.                                 }
  40.                                 // 记录该值已经遍历过
  41.                                 numList[reverseNum] = true;
  42.                                 // 获取其差值数
  43.                                 reverseNum = cutNum(reverseNum);
  44.                                 count++;
  45.                         }

  46.                         blackHoleList.add(numTempArray.toString());

  47.                 }
  48.                 return blackHoleList;
  49.         }

  50.         /**
  51.          * 输入一个数输出重组后的数的最大值和最小值的差值
  52.          *
  53.          * @param num
  54.          * @return
  55.          */
  56.         public static int cutNum(int num) {
  57.                 String[] numStrList = Integer.toString(num).split("");
  58.                 int[] numHash = new int[10];
  59.                 for (int j = 1; j < numStrList.length; j++) {
  60.                         numHash[Integer.parseInt(numStrList[j])]++;
  61.                 }
  62.                 int numBiggest, numSmallest;
  63.                 StringBuilder numString = new StringBuilder();
  64.                 for (int i = 0; i < numHash.length; i++) {
  65.                         for (int k = 0; k < numHash[i]; k++) {
  66.                                 numString.append(i);
  67.                         }
  68.                 }
  69.                 numSmallest = Integer.parseInt(numString.toString());
  70.                 numBiggest = Integer.parseInt(numString.reverse().toString());
  71.                 return numBiggest - numSmallest;

  72.         }
  73. }
复制代码
[0]
[495]
[53955, 59994]
[6174]
[61974, 63954, 75933, 82962]
[62964, 71973, 74943, 83952]

小于5位数的结果在输出时做个判断就OK,懒得弄了。

回复 使用道具 举报
吊炸天的题目
回复 使用道具 举报
godmmm 高级黑马 2014-12-28 23:02:41
25#
本帖最后由 godmmm 于 2014-12-28 23:06 编辑

花了3小时,时间有点长了,刚开始不相信答案,查了下baidu觉得差不多了!
大家给点意见!!!
  1. import java.io.FileWriter;
  2. import java.io.IOException;
  3. import java.util.*;

  4. /*数字黑洞:
  5. 有任意一个5位数,如:34256,
  6. 把它的各位数字打乱,重新排列,就可得到一个最大的数:65432,还有一个最小的数23456。
  7. 求这两个数字的差,得:41976,
  8. 然后把这个数字再次重复上述过程(如果不足5位,则前边补0)。
  9. 如此往复,数字会落入某个循环圈(称为数字黑洞)。
  10. 比如,刚才的数字会落入:[82962, 75933, 63954, 61974] 这个循环圈。

  11. 请编写程序,找到5位数所有可能的循环圈,并输出,每个循环圈占1行。其中5位数全都相同则循环圈为 [0],这个可以不考虑。循环圈的输出格式仿照:
  12. [82962, 75933, 63954, 61974]
  13. 其中数字的先后顺序可以不考虑。*/

  14. /*思路: 1.遍历5位数
  15. *           2.对5位数进行排序,用StringBuilder的反转功能,Arrays的sort功能  获取最大值,最小值
  16. *           3.计算差值,将最大值添加到list集合,原理是:list集合出现过这个最大值就会落入这两个最大值之间的循环圈;
  17. *          4.用list集合存放最大值进行循环圈的判断,用set结合进行存放循环圈,由于第三部的算法,set集合去重复就简单了。
  18. *注意:其实每个数都要落入一个循环圈,每个数落入的循环圈可以看你c盘下生产的"c:/digitalBlackHole.txt"文件,就是有点大,小心死机额!!!
  19. */
  20. public class DigitalBlaceHole {
  21.         public static void main(String[] args) throws IOException
  22.         {
  23.                 ArrayList<String> al=new ArrayList<String>();//list排序后的每个最大数,
  24.                 TreeSet<String> ts=new TreeSet<String>();//set集合存放不相同的循环圈
  25.                 FileWriter fw=new FileWriter("c:/digitalBlackHole.txt");//存放每个数落入的循环圈
  26.                 findDigital(al,fw,ts);//调用方法
  27.                 for(String s:ts)//打印循环圈
  28.                 {
  29.                         System.out.println(s);
  30.                         
  31.                 }
  32.         }
  33.         public static void findDigital(ArrayList<String> al,FileWriter fw,TreeSet<String> ts) throws IOException
  34.         {
  35.                 for(int x=10000;x<100000;x++)//遍历
  36.                 {
  37.                         al.add("num:"+x);
  38.                         dudge(x,al,fw,ts);//判断方法
  39.                 }
  40.         }
  41.         private static void dudge(int num,ArrayList<String> al,FileWriter fw,TreeSet<String> ts) throws IOException {
  42.                 while(true)
  43.                 {
  44.                         StringBuilder sb=new StringBuilder();//建立字符串缓冲区
  45.                         char[] buf=(num+"").toCharArray();//获取数字对应的字符数组
  46.                         Arrays.sort(buf);//排序数组
  47.                         String min=new String(buf);//得到最小值
  48.                         String max=sb.append(min).reverse().toString();//得到最大值
  49.                         int mid=Integer.parseInt(max)-Integer.parseInt(min);//获取差值
  50.                         if (al.contains(max)) {//判断集合是否有这个最大数存在
  51.                                 int id=al.indexOf(max);//索引位置
  52.                                 fw.write(al.subList(id, al.size()).toString());//获取子list集合字符串兵写入文件
  53.                                 ts.add(al.subList(id, al.size()).toString());//获取子list集合字符串并存入set集合
  54.                                 al.clear();//清空集合,进行下次判断
  55.                                 break;
  56.                         /*} else if (mid <= 0 || max.equals(min)) {//这个有点多余了,主要是每个数都要落入循环
  57.                                 al.clear();
  58.                                 break;*/
  59.                         } else {
  60.                                 al.add(max);//没落入循环继续判断
  61.                                 //System.out.println(map);
  62.                                 dudge(mid,al,fw, ts);//递归
  63.                         }
  64.                         break;//最后断开
  65.                 }
  66.         }
  67. }
复制代码
运行结果:
[0]
[95553, 99954]
[96543, 97641, 98622, 97533]
[96642, 97731, 98532, 97443]
[97443, 96642, 97731, 98532]
[97533, 96543, 97641, 98622]
[97641, 98622, 97533, 96543]
[97731, 98532, 97443, 96642]
[98532, 97443, 96642, 97731]
[98622, 97533, 96543, 97641]
[99954, 95553]



回复 使用道具 举报
本帖最后由 七弦 于 2014-6-12 19:38 编辑

参考参考吧。

  1. import java.util.Arrays;
  2. public class MyTest10 {
  3.       public static void main(String args[])
  4.       {
  5.       
  6.            int f=Sort(array(34256));
  7.            int x=Sort(array(34256));
  8.            for(int i=0;i<4;i++) {      
  9.            x=Sort(array(x));
  10.                System.out.print(x+" ");
  11.            }
  12.       }
  13.       
  14.       static int []array(int n)
  15.       {
  16.              int a[]=new int[5];
  17.              int i=0;
  18.              int m=n;
  19.              while(i<5)
  20.              {
  21.                      a=m%10;
  22.                      if(m%10==0)
  23.                      a=0;
  24.                      m/=10;
  25.                            i++;
  26.              }
  27.              return a;
  28.       }
  29.       static int Sort(int a[]){
  30.              Arrays.sort(a);
  31.              String min="";
  32.              for(int i=0;i<5;i++)
  33.              {
  34.                    min=min+String.valueOf(a);
  35.              }
  36.              int Min=Integer.parseInt(min);
  37.              StringBuffer sb=new StringBuffer(min).reverse();
  38.              String max=new StringBuffer(sb).toString();
  39.              int Max=Integer.parseInt(max);
  40.              int c=Max-Min;
  41.              return c;
  42.        }
  43. }
复制代码


回复 使用道具 举报
最终 我们都倒在了楼主的需求上....
回复 使用道具 举报
没有完美。。
回复 使用道具 举报
  1. import java.util.*;

  2. /*
  3. 有些没弄完,输出有重复的。

  4. 引路深度,来确定运算层数。

  5. Td//
  6. */

  7. public class LoopQDemo2{
  8.         public static void main(String[] args){
  9.        
  10.                 //计算深度
  11.                 int depth =5;
  12.                
  13.                 //存放圈
  14.                 TreeSet<Integer> ts = new TreeSet<Integer>();
  15.                
  16.                
  17.                 for(int i=10000;i<=99999;i++){
  18.                         //每次都要清空
  19.                         ts.clear();
  20.                         //得到深度
  21.                         int count = depth;
  22.                        
  23.                         int num = i;
  24.                         //加入初始数
  25.                         ts.add(i);
  26.                        
  27.                         while(count>0){
  28.                                 //得到最大减最小的5位数
  29.                                 num = getFiveSize(getMax(num)-getMin(num));
  30.                                 if(i==num){
  31.                                         //在运算深度内,若开始循环就打印圈
  32.                                         sop(i+"------"+ts);
  33.                                 }else{
  34.                                         //否则继续,加入数
  35.                                         count--;
  36.                                         ts.add(num);
  37.                                 }
  38.                         }
  39.                        
  40.                 }
  41.         }

  42.         /*
  43.                 得到补齐的5位数
  44.         */
  45.         static int getFiveSize(Integer x){
  46.                 //变成字符数组起
  47.                 char []cx = x.toString().toCharArray();
  48.                 //不足5位
  49.                 if(cx.length<5){
  50.                         //后面加0
  51.                         return (int)Math.pow(10,5-cx.length)*new Integer(new String(cx));
  52.                 }
  53.                 return new Integer(new String(cx));
  54.         }
  55.         //得到最小的数
  56.         static int getMin(Integer x){
  57.                 char []cx = x.toString().toCharArray();
  58.                 //排序就好了, 你懂的
  59.                 Arrays.sort(cx);
  60.                 return new Integer(new String(cx));
  61.         }
  62.         //同上
  63.         static int getMax(Integer x){
  64.                 char []cx = x.toString().toCharArray();
  65.                 Arrays.sort(cx);
  66.                 for(int i = 0;i<cx.length/2;i++){
  67.                         char tmp = cx[i];
  68.                         cx[i]= cx[cx.length-1-i];
  69.                         cx[cx.length-1-i] = tmp;
  70.                 }
  71.                 return new Integer(new String(cx));
  72.         }
  73.         //你懂的
  74.         static void sop(Object o){
  75.                 System.out.println(o);
  76.         }
  77.        
  78.         /*
  79.                
  80.         static int isSame(Integer x1,Integer x2){
  81.                 char []cx1 = x1.toString().toCharArray();
  82.                 char []cx2 = x2.toString().toCharArray();
  83.                 Arrays.sort(cx1);
  84.                 Arrays.sort(cx2);
  85.                 return new String(cx1).compareTo(new String(cx2));
  86.         }
  87.         */
  88. }
复制代码


E:\Coder\cc>java LoopQDemo2
53955------[53955, 59994]
53955------[53955, 59994]
53955------[53955, 59994]
53955------[53955, 59994]
59994------[53955, 59994]
59994------[53955, 59994]
59994------[53955, 59994]
59994------[53955, 59994]
61974------[61974, 63954, 75933, 82962]
62964------[62964, 71973, 74943, 83952]
63954------[61974, 63954, 75933, 82962]
71973------[62964, 71973, 74943, 83952]
74943------[62964, 71973, 74943, 83952]
75933------[61974, 63954, 75933, 82962]
82962------[61974, 63954, 75933, 82962]
83952------[62964, 71973, 74943, 83952]

没有剔除重复的。。

将就看。。
回复 使用道具 举报
进来看看,
回复 使用道具 举报
数字黑洞,面试不会出这样的题吧{:3_55:}
回复 使用道具 举报
其实我就不懂为什么61974之后不继续求循环圈了
回复 使用道具 举报

  1. import java.io.PrintStream;
  2. import java.lang.reflect.Array;
  3. import java.util.*;

  4. /**
  5. *
  6. 有任意一个5位数,如:34256,
  7. 把它的各位数字打乱,重新排列,就可得到一个最大的数:65432,还有一个最小的数23456。
  8. 求这两个数字的差,得:41976,
  9. 然后把这个数字再次重复上述过程(如果不足5位,则前边补0)。
  10. 如此往复,数字会落入某个循环圈(称为数字黑洞)。
  11. 比如,刚才的数字会落入:[82962, 75933, 63954, 61974] 这个循环圈。
  12. * @author JunZhu
  13. */
  14. public class NumberBlackHole {
  15.         public static void main(String[] args) throws Exception{
  16.                 //定义一个set用于存放所有可能的循环组合
  17.                 HashSet<HashSet> al=new HashSet<HashSet>();
  18.                 //把结果存入一个文件中
  19.                 PrintStream ps=new PrintStream("BlackHole.txt");
  20.                 //定义一个set用于存放某一个循环圈
  21.                 HashSet<Integer> al2=new HashSet<Integer>();
  22.                 //定义一个标志位用于判断循环的结束
  23.                 boolean flag=false;
  24.                 for (int i = 10000;i<100000; i++) {
  25.                         for (int j = i; ; ) {
  26.                                 al2.add(j);
  27.                                 j =getMaxNum(j)-getMinNum(j);
  28.                                 if (al2.contains(j)&& flag==false) {
  29.                                         flag=true;
  30.                                         al2.clear();
  31.                                 }
  32.                                 if (al2.contains(j)) {
  33.                                         flag=false;
  34.                                         break;
  35.                                 }
  36.                         }
  37.                         al.add((HashSet) al2.clone());
  38.                         //System.out.println(al2);
  39.                         //ps.println(al2);
  40.                         al2.clear();
  41.                 }
  42.                 Iterator it=al.iterator();
  43.                 while (it.hasNext()) {
  44.                         ps.println(it.next());
  45.                 }
  46.                 ps.close();
  47.         }
  48.         public static int getMaxNum(int a) {
  49.                 int[] num=getNum(a);
  50.                 int k=0;
  51.                 Arrays.sort(num);
  52.                 for (int i = num.length-1; i >= 0; i--) {
  53.                         k=k*10+num[i];
  54.                 }               
  55.                 return k;
  56.         }
  57.         public static int getMinNum(int a) {
  58.                 int[] num=getNum(a);
  59.                 int k=0;
  60.                 Arrays.sort(num);
  61.                 for (int i = 0; i < num.length; i++) {
  62.                         k=k*10+num[i];
  63.                 }
  64.                 return k;
  65.         }
  66.         public static int[] getNum(int a) {
  67.                 String ss=Integer.toString(a);
  68.                 //判断,不足5位的话补零
  69.                 int[] s=new int[5];
  70.                 for (int i = 0; i < ss.length(); i++) {
  71.                         s[i]=a%10;
  72.                         a=a/10;
  73.                 }
  74.                 if (ss.length()<5) {
  75.                         for (int i = ss.length(); i < 5; i++) {
  76.                                 s[i]=0;                                                               
  77.                         }
  78.                 }
  79.                 return s;
  80.         }
  81. }
复制代码
最后结果是输出到了BlackHole.txt文件中,有一个零,是例外的。一共三组。
[0]
[71973, 83952, 74943, 62964]
[53955, 59994]
[63954, 61974, 82962, 75933]


回复 使用道具 举报
本帖最后由 西门吹风 于 2014-6-1 18:48 编辑

新手,尝试了写了一下,望大神指正
  1. /*
  2. 1、获取任意五位数上各个位的数字并且放到数组中
  3. 2、通过对数组排升序获取最小值
  4. 3、通过对数组排降序获取最大值
  5. 4、通过最大值和最小值获取差值
  6. 5、通过差值循环,判断当前差值是否与这前的某个差值相等
  7.       1)新建一个容器用来存放差值 目前只学过数组,用new in
  8.       2)用循环判断当判断当前差值是否与这前的某个差值相等
  9.            a、如果相等,打印这当前差值、与当前差值相等的差值以及它们之间的差值,
  10.                  这也就是循环圈,然后跳出循环
  11.            b、如果不等,继续循环
  12. */
  13. class  Quan
  14. {
  15.         public static void main(String[] args)
  16.         {
  17.                 int x=34556;
  18.                 getCirculation(x);
  19.         }
  20.         public static void getCirculation(int x)
  21.         {
  22.                 int[] res=new int[100];   //  目前只学过数组,用这个可能不太好,不知道有没有更恰当的
  23.                 boolean check=true;
  24.                 int difference=getDifference(x);
  25.                 for(int j=0;j<res.length-1&&check==true;difference=getDifference(difference),j++)
  26.                 {
  27.                         res[j]=difference;
  28.                         for(int k=j-1;k>=0&&check==true;k--)
  29.                         {
  30.                                 if(res[k]==difference)
  31.                                 {
  32.                                         System.out.print("[");
  33.                                         for(int a=k;a<j-1;a++)
  34.                                         {
  35.                                                 System.out.print(res[a]+",");
  36.                                         }
  37.                                         System.out.print(res[j-1]+"]");
  38.                                         check=false;
  39.                                 }
  40.                         }
  41.                 }
  42.         }
  43.         public static int getDifference(int x)    //获取差值
  44.         {
  45.                 int[] arr=getArr(x);
  46.                 maxSort(arr);
  47.                 int max=getNumber(arr);
  48.                 minSort(arr);
  49.                 int min=getNumber(arr);
  50.                 return (max-min);        
  51.         }
  52.         public static int[] getArr(int x)   //获取五位数的数组
  53.         {
  54.                 int[] arr=new int[5];
  55.                 for (int i=10000,j=0;i>=1;i=i/10,j++)
  56.                 {
  57.                         arr[j]=x/i;
  58.                         x=x%i;
  59.                 }
  60.                 return arr;
  61.         }
  62.         public static void maxSort(int[] arr)   //升序排列数组
  63.         {
  64.                 for(int i=0;i<arr.length-1;i++)
  65.                 {
  66.                         for(int j=i+1;j<arr.length;j++)
  67.                         {
  68.                                 if(arr[i]<arr[j])
  69.                                 {
  70.                                         int temp=arr[i];
  71.                                         arr[i]=arr[j];
  72.                                         arr[j]=temp;
  73.                                 }
  74.                         }
  75.                 }
  76.         }
  77.         public static void minSort(int[] arr)   //降序排列数组
  78.         {
  79.                 for(int i=0;i<arr.length-1;i++)
  80.                 {
  81.                         for(int j=i+1;j<arr.length;j++)
  82.                         {
  83.                                 if(arr[i]>arr[j])
  84.                                 {
  85.                                         int temp=arr[i];
  86.                                         arr[i]=arr[j];
  87.                                         arr[j]=temp;
  88.                                 }
  89.                         }
  90.                 }
  91.         }
  92.         public static int getNumber(int[] arr)    //数组转成数字
  93.         {
  94.                 int num=0;
  95.                 for(int i=0,temp=10000; i<arr.length;i++,temp=temp/10)
  96.                 {
  97.                         num=num+arr[i]*temp;
  98.                 }
  99.                 return num;
  100.         }
  101. }
复制代码



回复 使用道具 举报
我表示连题目都没有看懂,
回复 使用道具 举报
12楼的果然好长,看晕了。。。
回复 使用道具 举报
这个问题怎么没有正解呢!
围观中!
回复 使用道具 举报
不是没人能解,估计都不想敲,太长了,亲。。。。。。。。。。。
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Iterator;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

public class 数字黑洞 {
    static Set<List<Integer>> sets = new HashSet<List<Integer>>();// 记录每个 循环圈  
    static int start = 0; // 记录循环圈的开始位置  

    // 得到最大的数  
    public static int max(String s) {
        char[] c = s.toCharArray();
        Arrays.sort(c);
        StringBuffer sb = new StringBuffer(String.valueOf(c));
        return Integer.parseInt(sb.reverse().toString());
    }

    // 得到最小的数  
    public static int min(String s) {
        char[] c = s.toCharArray();
        Arrays.sort(c);
        return Integer.parseInt(String.valueOf(c));
    }

    // 查找是否有循环圈  
    public static boolean find(int n, List<Integer> lis) {
        for (int i = 0; i < lis.size(); i++) {
            if (n == lis.get(i)) {
                start = i; // 设置循环圈的开始  
                return true;
            }
        }
        return false;
    }

    // 这个数字的五位是否都一样如:11111,22222,...  
    public static boolean same(int n) {
        char[] c = (String.valueOf(n)).toCharArray();
        char t = c[0];
        for (int i = 1; i < c.length; i++) {
            if (t != c) {
                return false;
            }
        }
        return true;
    }

    // 判断是否在sets元素里重复  
    public static boolean contain(List<Integer> tt) {
        boolean flag = false;
        // 从sets头到尾扫描是是否包含tt元素组  
        Iterator<List<Integer>> iter = sets.iterator();
        while (iter.hasNext()) {
            if (iter.next().containsAll(tt)) {
                flag = true;
                break;
            }
        }
        return flag;
    }

    // 输出循环圈  
    public static void print() {
        Iterator<List<Integer>> iter = sets.iterator();
        while (iter.hasNext()) {
            System.out.println(iter.next());
        }
    }

    // 进入黑洞测试*********  
    public static void bl(int n, List<Integer> lis) {
        String s = String.valueOf(n);
        int a = max(s); // 得到最大的数  
        int b = min(s); // 得到最小的数  
        int c = a - b; // 得到五位数 结果  
        if (find(c, lis)) { // 找到循环圈  
            List<Integer> temp = new ArrayList(); // 开辟新空间 并copy记录  
            temp.addAll(lis.subList(start, lis.size()));
            if (!contain(temp)) { // 去重  
                sets.add(temp); // 记录一个循环圈  
            }
            lis.clear(); // 清空  
            return;
        }
        lis.add(c);
        bl(c, lis); // 递归探测  
    }

    // 主函数============  
    public static void main(String[] args) {
        List<Integer> lis = new ArrayList(); // 保存记录  
        for (int i = 10000; i < 99999; i++) {
            if (!same(i)) // 去掉不符合条件的元素:如(11111,22222,...)  
                bl(i, lis); // 进入黑洞测试  
        }
        print(); // 输出循环圈  
    }
}
回复 使用道具 举报
难道这个题就没同学能写出来吗?
回复 使用道具 举报
连题目求的是什么都不知道???
回复 使用道具 举报
留下,以后看
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 加入黑马