日期:2014-05-20 浏览次数:21351 次
import java.util.*;
public class Test
{
public static int maxNum(int num)
{
int[] place = new int[5];
for (int i = 0; i < 5; i++)
{
place[i] = num % 10;
num /= 10;
}
Arrays.sort(place);
int maxNum = 0;
for (int i = 4; i >= 0; i--)
{
maxNum *= 10;
maxNum += place[i];
}
return maxNum;
}
public static int minNum(int num)
{
int[] place = new int[5];
for (int i = 0; i < 5; i++)
{
place[i] = num % 10;
num /= 10;
}
Arrays.sort(place);
int minNum = 0;
for (int i = 0; i < 5; i++)
{
minNum *= 10;
minNum += place[i];
}
return minNum;
}
public static void main(String[] args)
{
int[] bNumUsed = new int[100000]; //用来标记数字,-1表示没有用过,不为-1表示在第几轮的循环里面
ArrayList<ArrayList<Integer>> circleList = new ArrayList<ArrayList<Integer>>();
ArrayList<Integer> circle = new ArrayList<Integer>();
for (int i = 0; i < bNumUsed.length; i++)
{
bNumUsed[i] = -1;
}
loop:
for (int i = 0; i < 100000; i++)
{
//System.out.println(i);
if (bNumUsed[i] != -1)
{
continue loop;
}
for (int t = i; t != 0;)
{
if (bNumUsed[t] == -1)
{
bNumUsed[t] = i;
circle.add(t);
t = maxNum(t) - minNum(t);
}
else if (bNumUsed[t] != i)
{
circle = new ArrayList<Integer>();
continue loop;
}
else
{
t = circle.indexOf(t);
for (int j = 0; j < t; j++)
{
circle.remove(0);
}
circleList.add(circle);
circle = new ArrayList<Integer>();
continue loop;
}
}
}
for (ArrayList<Integer> cir : circleList)
{
System.out.println(cir);
}
}
}