VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 3253|回复: 29

请各位高手帮忙写个算法!!

[复制链接]

1

主题

12

帖子

11.00

积分

新手上路

Rank: 1

积分
11.00
发表于 2020-2-6 18:00:01 | 显示全部楼层 |阅读模式
问题:

从 0001 开始 ,每次加1 ,到 0009 ,再加1 则变成 000A ,再加1 变成 000B, 直到 000Z, 然后再加 1 ,则十位变成 1,即 0010 ,再加 1 ,则变成 0011, 再加,直到 0019 ,再加 1 ,则变为 001A ,再加,直到 001Z, 如此每次加 1 ,最终变为 ZZZZ ,则此算法用完 .(注: 字母 'O' 和'I '不要,因为与 0 和 1 太像)!!非常感谢大家!!!
回复

使用道具 举报

0

主题

2

帖子

3.00

积分

新手上路

Rank: 1

积分
3.00
发表于 2020-5-31 14:45:01 | 显示全部楼层
class Test
{

        public static void main(String[] args)
        {
                String[] strAr= {"1","2","3","4","5","6","7","8","9","A","B","C","D","E","F","G","H","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"};
                String b = "";
                int le = strAr.length;
                System.out.println("Start" + le);
                for (int a=0;a < le*4; a ++)
                {

                        if (a < le)
                        {
                                b =  "000" + strAr[a];
                        }else if (a < le*2)
                        {
                                b =  "00" + strAr[a-le]+"Z";
                        }else if (a < le*3)
                        {
                                b =  "0" + strAr[a-le*2]+"ZZ";
                        }else if (a < le*4)
                        {
                                b =  strAr[a-le*3]+"ZZZ";
                        }

                        System.out.println("this is over code :" + b);
                }
        }
}
回复

使用道具 举报

1

主题

12

帖子

11.00

积分

新手上路

Rank: 1

积分
11.00
 楼主| 发表于 2020-6-9 05:15:01 | 显示全部楼层
楼上的,不对哦,结果应该要是这样的(左边的是十进制的,右边的是三十四进制的):

0:  0         
1:  1
2:  2
3:  3
4:  4
5:  5
6:  6
7:  7
8:  8
9:  9
10:  A
11:  B
12:  C
13:  D
14:  E
15:  F
16:  G
17:  H
18:  J
19:  K
20:  L
21:  M
22:  N
23:  P
24:  Q
25:  R
26:  S
27:  T
28:  U
29:  V
30:  W
31:  X
32:  Y
33:  Z
34:  10
35:  1A
....
1156: ZZ
麻烦你再想想,非常感谢!!
回复

使用道具 举报

1

主题

12

帖子

11.00

积分

新手上路

Rank: 1

积分
11.00
 楼主| 发表于 2020-6-9 16:45:02 | 显示全部楼层
再补充一下吧,其实就是写一个 十六进制的算法,只不过,十六进制改为了三十四进制

String str34[] = { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9",
                "A", "B", "C", "D", "E", "F", "G", "H", "J", "K", "L", "M",
                "N", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z" };
回复

使用道具 举报

0

主题

10

帖子

7.00

积分

新手上路

Rank: 1

积分
7.00
发表于 2020-6-10 14:30:01 | 显示全部楼层
我刚写了,你看看,行不行

class Test
{

        public static void main(String[] args)
        {
                String[] strAr= {"1","2","3","4","5","6","7","8","9","A","B","C","D","E","F","G","H","J","K","L","M","N","P","Q","R","S","T","U","V","W","X","Y","Z"};
                String num = "0000";
                String ge="";
                String shi="";
                String bai="";
                String qian="";
                int s=0;
                int genum=0,shinum=0,bai=0,qian=0;
                int length=strAr.length();
                while(true){
                        s++;
                        genum++;
                        if(genum<length){
                                num=num.subString(1,3)+geunm.toString;
                        }else{
                                genum=0;
                                shinum++;
                                if(shinum<length){
                                        num=num.subString(1,2)+shinum.toString+"0";
                                }else{
                                        shinum=0;
                                        bainum++;
                                        if(shinum<length){
                                                num=num.subString(1,1)+bainum.toString+"00";
                                        }else{
                                                bainum=0;
                                                qiannum++;
                                                if(qiannum<length){
                                                        num=qiannum.toString+"000";
                                                }else{
                                                        break;
                                                }
                                        }
                                }
                        }
                        System.out.println(s+":"+gennum);
                }
        }
}
回复

使用道具 举报

0

主题

10

帖子

7.00

积分

新手上路

Rank: 1

积分
7.00
发表于 2020-6-10 16:45:01 | 显示全部楼层
我也是新手,可能要调试下
刚才注册,搞了半天
回复

使用道具 举报

1

主题

12

帖子

11.00

积分

新手上路

Rank: 1

积分
11.00
 楼主| 发表于 2020-6-12 21:30:02 | 显示全部楼层
晕了,楼上的仁兄啊,编辑都不过啊,变量 String bai="";String qian="";int genum=0,shinum=0,bai=0,qian=0; 还有 subString (), 应该是 substring();
回复

使用道具 举报

1

主题

12

帖子

11.00

积分

新手上路

Rank: 1

积分
11.00
 楼主| 发表于 2020-6-13 22:15:01 | 显示全部楼层
再补充一下吧,其实不用考虑字符串 "0000" 的,只要 传入一个数,比如 34 ,则变成 10 ,比如输入 35 ,则变成 1A ,用另一句话, DecimalFormat df = new DecimalFormat("0000"); df.format(String.valueOf(10)); 就可以变为 "0010" 了
回复

使用道具 举报

0

主题

10

帖子

7.00

积分

新手上路

Rank: 1

积分
7.00
发表于 2020-6-14 07:45:01 | 显示全部楼层
你等下,我去调下
回复

使用道具 举报

0

主题

10

帖子

7.00

积分

新手上路

Rank: 1

积分
7.00
发表于 2020-6-14 16:30:02 | 显示全部楼层
我是用文本写的,函数可能有错,命名也不规范哦
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

快速回复 返回顶部 返回列表