- import java.util.*;
- /*
- 有些没弄完,输出有重复的。
- 引路深度,来确定运算层数。
- Td//
- */
- public class LoopQDemo2{
- public static void main(String[] args){
-
- //计算深度
- int depth =5;
-
- //存放圈
- TreeSet<Integer> ts = new TreeSet<Integer>();
-
-
- for(int i=10000;i<=99999;i++){
- //每次都要清空
- ts.clear();
- //得到深度
- int count = depth;
-
- int num = i;
- //加入初始数
- ts.add(i);
-
- while(count>0){
- //得到最大减最小的5位数
- num = getFiveSize(getMax(num)-getMin(num));
- if(i==num){
- //在运算深度内,若开始循环就打印圈
- sop(i+"------"+ts);
- }else{
- //否则继续,加入数
- count--;
- ts.add(num);
- }
- }
-
- }
- }
- /*
- 得到补齐的5位数
- */
- static int getFiveSize(Integer x){
- //变成字符数组起
- char []cx = x.toString().toCharArray();
- //不足5位
- if(cx.length<5){
- //后面加0
- return (int)Math.pow(10,5-cx.length)*new Integer(new String(cx));
- }
- return new Integer(new String(cx));
- }
- //得到最小的数
- static int getMin(Integer x){
- char []cx = x.toString().toCharArray();
- //排序就好了, 你懂的
- Arrays.sort(cx);
- return new Integer(new String(cx));
- }
- //同上
- static int getMax(Integer x){
- char []cx = x.toString().toCharArray();
- Arrays.sort(cx);
- for(int i = 0;i<cx.length/2;i++){
- char tmp = cx[i];
- cx[i]= cx[cx.length-1-i];
- cx[cx.length-1-i] = tmp;
- }
- return new Integer(new String(cx));
- }
- //你懂的
- static void sop(Object o){
- System.out.println(o);
- }
-
- /*
-
- static int isSame(Integer x1,Integer x2){
- char []cx1 = x1.toString().toCharArray();
- char []cx2 = x2.toString().toCharArray();
- Arrays.sort(cx1);
- Arrays.sort(cx2);
- return new String(cx1).compareTo(new String(cx2));
- }
- */
- }
复制代码
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]
没有剔除重复的。。
将就看。。
|