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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

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

  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]

没有剔除重复的。。

将就看。。
回复 使用道具 举报
没有完美。。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马