算法设计,一个流水号,中间存在一个禁忌数,如何快速跳过这个数字

问题描述

算法设计,一个流水号,中间存在一个禁忌数,如何快速跳过这个数字
具体需求如下,一串数字(比如1235673),禁忌数为4,那么流水号的下一位应该直接跳过1235674,变成1235675.
那么如果这串数字是39999999这样的情况,那么40000000-49999999都是不能出现的禁忌数。
如何找到一个算法,快速的算出避开禁忌数的下一个数?

解决方案

  • 用一数组表示这个流水号。即用一组整型数表示0-8,每次+1后将数组合成为整数。合成时0-3表示0-3,4-8 表示5-9

解决方案二:
本质上这就是一个10进制转9进制数的问题,而这个9进制数的元字符是123567890。

解决方案三:

 #include <iostream>#include <string>using namespace std;char metachar[] = { '0' '1' '2' '3' '5' '6' '7' '8' '9' };string decto9(int n){    string s = """";    while (n > 0)    {        s = metachar[n % 9] + s;        n /= 9;    }    return s;}int main(){    for (int i = 1; i < 99; i++)        cout << decto9(i) << endl;}

解决方案四:
1
2
3
5
6
7
8
9
10
11
12
13
15
16
17
18
19
20
21
22
23
25
26
27
28
29
30
31
32
33
35
36
37
38
39
50
51
52
53
55
56
57
58
59
60
61
62
63
65
66
67
68
69
70
71
72
73
75
76
77
78
79
80
81
82
83
85
86
87
88
89
90
91
92
93
95
96
97
98
99
100
101
102
103
105
106
107
108
109
110
111
112
113
115
116
117
118
119

在线编译运行通过
http://codepad.org/DSEeaAMW

解决方案五:
如果你有一个流水号,想基于此找到下一个流水号,其实就是先将这个流水号视作一个9进制的数,找到对应的10进制数,+1,然后再转换回来即可。

时间: 2024-09-01 22:38:56

算法设计,一个流水号,中间存在一个禁忌数,如何快速跳过这个数字的相关文章

《算法设计与分析》一一导读

前言 算法是计算的灵魂(spirit of computing),而算法设计与分析的基础知识是计算机科学的基石.算法设计与分析的知识内容很丰富,可以从不同视角进行组织与阐述.一种视角是关注经典的算法问题,如排序.选择.查找.图遍历等:另一种视角是关注经典的算法设计策略,包括分治.贪心.动态规划等.本书的组织兼顾问题与策略两种视角.首先按照经典的算法设计策略,将书中的主体内容分为遍历.分治.贪心.动态规划4个部分.其次在每个部分之内,又围绕经典的算法问题来阐述该部分所着重讨论的策略. 本书集中讨论

已知一个带有头结点的单链表,设计算法将该单链表复制一个拷贝,急急急

问题描述 已知一个带有头结点的单链表,设计算法将该单链表复制一个拷贝,急急急 已知一个带有头结点的单链表,设计算法将该单链表复制一个拷贝,急急急 解决方案 http://zhidao.baidu.com/link?url=07NsUCYjlwgZFGwfyhqq9NxVTk7hVXs7yBAZAyChUU_CPFIZ_WjwusNVPD7CDC1vjFVaMMTGFwp-H8tnfQb9Qa

数据结构算法设计: 请设计一个算法,统计一个循环单链表L中的结点个数。

问题描述 数据结构算法设计: 请设计一个算法,统计一个循环单链表L中的结点个数. 算法设计: 请设计一个算法,统计一个循环单链表L中的结点个数. 解决方案 int n = 0; while (L != NULL) { L = L->next; n++; } 解决方案二: /* counts the nodes in the list / int fuc(struct list head) { void *tmp; int i; if(!head) return -1; for(i = 1, tm

使用Windows DNA 设计、部署和管理一个可伸缩的电子商务网站(2)--来自M$

window|电子商务|设计|伸缩 记住记录需要大量的信息,这将允许我们对其他的服务使用那些资源.点击okey.下一个更改是直接进入注册中,工作于注册中的任何时间,记住你想要遵循人们常常讨论的这样一个规则,做一个你的注册的备份并从这个备份中工作. 当然我们要在这个演示中打破这个规则.我们打开这个注册并且我们的第一个设置被设置为TCP参数.我们不想用完用户端口,于是我们将其设置得非常大.一个大的窗口尺寸对于高速网络工作的更好并且当窗口填满后TCP就停止了. 接下来,我们进入H关键字区域计算机系统(

举例出结合不同算法技术解决某个实际问题的一个实例

问题描述 举例出结合不同算法技术解决某个实际问题的一个实例 1C 如题,有哪些实际问题同时要用到多个算法技术?请举例并说明,谢谢. 解决方案 阿法狗~~哈哈哈

《Python机器学习——预测分析核心算法》——2.1 “解剖”一个新问题

2.1 "解剖"一个新问题 本书介绍的算法通常是从一个充满了数字,可能是特征(变量)的矩阵(或表格)开始的.表2-1展示了一些术语,代表了一个小规模的二维机器学习数据集.此表提供了一个数据集的基本印象,这样对"列代表属性特征,行代表实例"等约定就比较熟悉.这个例子中的问题是预测下一年在线购买书籍所需花费的金额. 数据是按照行和列组织的.每行代表一个实例(或者叫一个例子.观察).在表2-1中每列指定相应的列名,用来指明在一个机器学习问题中所起的作用.标明为"

《互联网产品设计》一第1章 什么是产品设计1.1 一个网站不是一个产品

第1章 什么是产品设计 互联网产品设计浏览器里的书签是什么?手机里的应用是什么?很多网站.移动应用.服务和工具都已在网络上找得到,但你还想要一个新产品--因为你有一个问题需要解决,有一个体验需要设计出来,当然也包括它的视觉展示.你确定跟你一样,还有一群人的需求未得到满足,并且你也知道他们需要什么来满足这些需求. 如何创造一个应用程序让人们发现它?如何提供可以让人们反复使用的服务?如何创造一种工作方式,能够使你.你的合作伙伴以及你的产品跟上用户.市场甚至是整个世界的变化? 这本书将指导你去探索互联

二者从产品设计开始就存在着一个小差异

二者从产品设计开始就存在着一个"小差异",且往后这个小差异的差别越来越大.Twitter信息像接力,一棒接一棒,每一棒都是独立个体.新浪微博则是,聚光灯始终在第一棒身上.谁更代表未来? 近日,关于新浪微博活跃度是否降低有一番热议.钛媒体登载的一篇文章认为<新浪微博,不是活跃度降低,而是回归本源>链接:http://www.tmtpost.com/48551.html.这让我想起了几年前对博客产品的讨论,当年经历过了全民博客时代后,大量僵尸用户出现,博客也进入了一个平稳期,到

算法实现-组合问题:一个A集合,一个B集合,A与B部分关联集合。需要得到一个或多个组合解

问题描述 组合问题:一个A集合,一个B集合,A与B部分关联集合.需要得到一个或多个组合解 A集合有{A1,A2,A3....},B集合有{B1,B2,B3...},A集合与B集合部分关联{A1B1,A1B2,A2B1,A2B2,A2B3....}是混乱搭配(也存在不关联的情况) A1需要B集合中n个搭配,A2需要B集合中m个搭配...... 需要得到在B集合尽量分配给A集合完的情况下最优组合.一个组合或多个组合. 哪位大神能给出编码逻辑.非常感谢. 解决方案 在A集合的长度范围内遍历A,B集合