sky4160864 2010-03-17 12:03
浏览 246
已采纳

急求解一算法(感谢)

题:求一下个数
给出一个数字 152,它以125,152,215,251,512,512,1025...排列(位数不足补0)
现在要得到 152 后面的下一个数,即答案是512

求一通用的java算法

列(给出以下3个数字):
115
1051
6233
结果输出:
151
1105
6323

希望高手帮我解决下,感谢!

  • 写回答

7条回答 默认 最新

  • qwe_rt 2010-03-17 12:58
    关注

    部分伪代码实现,接下来Lz锻炼锻炼coding! :o :o
    [code="java"]

    public class Util(){

    public int parse(int argInput){
    //将整数单个分解存于数组arr中。
    String str = argInput+"";
    int length =str.length();
    int[] arr = new int(length );
    for(int i = 0;i<length;i++){
    arr[i]=Integer.parseInt(str.substring(i,i+1));
    }
    int index = length -1;
    while(index==0){//从数的最后一位开始,查找前一位比一位小的数。
        if(arr[index]>arr[--index])break;
        }
    
    if(index==0){//添加一个0,处理.这中情况如“321”
    
    //将0放在数组的第二个位置,数组的第一个位置放原来数值中的最小数,比如321中的“1”
    //这是数组为“1 0 ..”
    ...
    //数组第二个位置后面的数从小到大排列。
    ...
    
    }else{//不添加0 这种情况如“2563”
    
    //将index位置的值与index-1的值互换。如将6与5互换,“2653”。
    ...
    //将index后面(包含index位置)的数值从小到大排列。这时将“5 3”从小到大排列。
    ...
    }
    ///将int数组arr各个数值按顺序生成一个整数。返回所需要的值。
    

    }//end parse

    }
    [/code]

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(6条)

报告相同问题?

悬赏问题

  • ¥15 怎样才能让鼠标沿着线条的中心线轨迹移动
  • ¥60 用visual studio编写程序,利用间接平差求解水准网
  • ¥15 Llama如何调用shell或者Python
  • ¥20 谁能帮我挨个解读这个php语言编的代码什么意思?
  • ¥15 win10权限管理,限制普通用户使用删除功能
  • ¥15 minnio内存占用过大,内存没被回收(Windows环境)
  • ¥65 抖音咸鱼付款链接转码支付宝
  • ¥15 ubuntu22.04上安装ursim-3.15.8.106339遇到的问题
  • ¥15 blast算法(相关搜索:数据库)
  • ¥15 请问有人会紧聚焦相关的matlab知识嘛?