Algorithm 如何排序数字1。。。n不将数字转换为字符串的词典?
假设我输入了Algorithm 如何排序数字1。。。n不将数字转换为字符串的词典?,algorithm,math,Algorithm,Math,假设我输入了n如何打印此序列而不将数字转换为字符串 i、 e:- n=100 输出:-1101112131415171819220… n=15输出:-110112131515243456789 n=20输出:-1101111315161718192203456789 这里的主要因素是什么 我的初始解决方案将打印1后跟0或2后跟0 int n = 100; for (int i = 1; i <= n; i++) { int x = i; while
n
如何打印此序列而不将数字转换为字符串
i、 e:-
n=100
输出:-1101112131415171819220…
n=15
输出:-110112131515243456789
n=20
输出:-1101111315161718192203456789
这里的主要因素是什么
我的初始解决方案将打印1后跟0或2后跟0
int n = 100;
for (int i = 1; i <= n; i++) {
int x = i;
while (x <= n) {
System.out.println(x);
x *= 10;
}
}
int n=100;
对于(int i=1;i我找到了解决方案:-
您可以使用首字母k=1来调用它
例如printnum(15,1
void printnums(int n, int k) {
if (k > n) {
return;
}
for (int i = 0; i < 10; i++) {
if (k <= n) {
System.out.println(k);
k *= 10;
printnums(n, k);
k /= 10;
k++;
if (k % 10 == 0) return;
}
}
}
void printnums(int n,int k){
如果(k>n){
返回;
}
对于(int i=0;i<10;i++){
如果(k这里是基于OP自己的答案的Python浓缩解决方案:
def genRangeLexiSorted(n, k=1):
for i in range(k, min(k+10-k%10, n+1)):
yield i
for j in genRangeLexiSorted(n, 10*i):
yield j
def printnums(n):
print(*list(genRangeLexiSorted(n)))
然后电话
printnums(1)
printnums(9)
printnums(11)
printnums(20)
printnums(100)
给出以下输出:
1
1 2 3 4 5 6 7 8 9
1 10 11 2 3 4 5 6 7 8 9
1 10 11 12 13 14 15 16 17 18 19 2 20 3 4 5 6 7 8 9
1 10 100 11 12 13 14 15 16 17 18 19 2 20 21 22 23 24 25 26 27 28 29 3 30 31 32 33 34 35 36 37 38 39 4 40 41 42 43 44 45 46 47 48 49 5 50 51 52 53 54 55 56 57 58 59 6 60 61 62 63 64 65 66 67 68 69 7 70 71 72 73 74 75 76 77 78 79 8 80 81 82 83 84 85 86 87 88 89 9 90 91 92 93 94 95 96 97 98 99
第二,事实上。1)我看不到这里的模式,这些例子当然有多种解释——请具体说明你想要的函数。2)你试过什么了吗?有什么出发点吗?(如果问题是关于找到模式——我很确定这是离题的。)@phipsgabler您可以想象命名文件……我的第一个想法是将第二个num转换为float?排序似乎是基于数字的字符串表示,而不是数字值。因此问题似乎是:如何打印数字1,…n按字典排序,而不将数字转换为字符串?很好的解决方案。可以进行一些简化,例如k*=10;printnums(n,k);k/=10;
相当于printnums(n,10*k);
。参数k
可以有默认值1。是的,深度优先搜索是一种方法。