| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 454 人关注过本帖
标题:帮我改一改 各位高手们 我明天就要用了 谢谢了
只看楼主 加入收藏
王雪亮
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:75
专家分:158
注 册:2011-5-4
结帖率:66.67%
收藏
 问题点数:0 回复次数:0 
帮我改一改 各位高手们 我明天就要用了 谢谢了
任意一个5位数,比如:34256,把它的各位数字打乱,重新排列,可以得到一个最大的数:65432,一个最小的数23456。求这两个数字的差,得:41976,把这个数字再次重复上述过程(如果不足5位,则前边补0)。如此往复,数字会落入某个循环圈(称为数字黑洞)。
比如,刚才的数字会落入:[82962, 75933, 63954, 61974] 这个循环圈。

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

public class heldong {

    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        int aaa=1;
        System.out.println(aaa);
        int q[]=new int[5];
        int e[][]=new int[200000][20];
       for(int i=10000;i<=99999;i++)
       {
           int a1=i/10000;
           int a2=(i-a1*10000)/1000;
           int a3=(i-a1*10000-a2*1000)/100;
           int a4=(i-a1*10000-a2*1000-a3*100)/10;
           int a5=i-a1*10000-a2*1000-a3*100-a4*10;
        q[0]=a1;   
        q[1]=a2;
        q[2]=a3;
        q[3]=a4;
        q[4]=a5; //q数组是存放一个数的各个位
        
        for (int m=0;m<4;m++)
        {
            for(int n=m+1;n<5;n++)
                if(q[m]<q[n])
                {
                    int j=q[m];
                    q[m]=q[n];
                    q[n]=j;
                }
        }
            int max=q[0]*10000+q[1]*1000+q[2]*100+q[3]*10+q[4];
            int min=q[4]*10000+q[3]*1000+q[2]*100+q[1]*10+q[0];
            
            int w=max-min;//存放差
            System.out.println(w);
            /*int u[]=new int [20];
            u[19]=w;
            int p=0;
            int y=0;
            
            for(int o=0;o<19;o++)
            {
                if(u[o]==0)
                {
                    y=o;
                    continue;
                }
              if(u[19]==u[o])
              {
                  p=p+1;
                  continue;              
              }
            }
            if(p==0)
            {
                u[y+1]=u[19];
            }
           for(int z=aaa;z==aaa;z++)
            {
            for(int r=0;r<17;r++)
            {
                e[z-1][r]=u[r];
            }
            }
            aaa++;*/
         
       }
   
     /*  for(int z=0;z<200000;z++)
        {
        for(int r=0;r<20;r++)
        {
            if (e[z][r]==0)
                continue;
            System.out.print(e[z][r]);
        }
        System.out.println("");
        
        }*/
    }

}
搜索更多相关主题的帖子: 数字 编写程序 最大的 
2011-05-14 10:04
快速回复:帮我改一改 各位高手们 我明天就要用了 谢谢了
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.027312 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved