由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - 这道题有什么好思路?
相关主题
[合集] Solve this task using recursion. how to ?any thoughts about matlab
MatLab Code有人研究过BitCoin的算法和通讯协议吗? (转载)
how to code this question of LinkedIn (转载)LSTM 是不是坨屎?
如何编程实现循环嵌套的次数?reverse LL recursively
[转载] 简单的题都不敢做了.[合集] 问个递归的问题
面试题 -算法?C -> assembly
Help with a simple c-shell script.Python: What does this mean?
[合集] google interview questionrecurvion真的很难懂~~
相关话题的讨论汇总
话题: int话题: input话题: print话题: prefix话题: void
进入Programming版参与讨论
1 (共1页)
s******r
发帖数: 2
1
Input Output
1 0,1,2,..,9
2 0,1,2,...,98,99
3 0,1,2,...,999
......
不能用整数打印, 2^32 (Int32) 最多用到9或10,当input=11时会溢出。
据说用recursive algorithm
那位大侠给个思路。。。
t****t
发帖数: 6806
2
sub bt
{
my $i=shift;
my $prefix=shift;
for my $k (0..9) {
if ($i==1) {
print "$prefix$k\n";
} else {
bt ($i-1, ($prefix || $k) ? "$prefix$k" : "");
}
}
}
but do you really want to print those number literally?
if input=11, then it's 10^11 numbers.
O i like perl.

【在 s******r 的大作中提到】
: Input Output
: 1 0,1,2,..,9
: 2 0,1,2,...,98,99
: 3 0,1,2,...,999
: ......
: 不能用整数打印, 2^32 (Int32) 最多用到9或10,当input=11时会溢出。
: 据说用recursive algorithm
: 那位大侠给个思路。。。

s******r
发帖数: 2
3
Thanks.
I don't know Perl. What is shift, my?
Could you translate it into C code?
thanks again.

【在 t****t 的大作中提到】
: sub bt
: {
: my $i=shift;
: my $prefix=shift;
: for my $k (0..9) {
: if ($i==1) {
: print "$prefix$k\n";
: } else {
: bt ($i-1, ($prefix || $k) ? "$prefix$k" : "");
: }

o***g
发帖数: 2784
4
private void print(String h,int n,int l)
{
if (l==0)
{
System.out.print(h);
System.out.println(n);
return;
}
for (int i=0;i<10;i++)
{
print(h+new Integer(n).toString(),i,l-1);
}
}
public void run(int input)
{
for (int i=0;i<10;i++)


【在 t****t 的大作中提到】
: sub bt
: {
: my $i=shift;
: my $prefix=shift;
: for my $k (0..9) {
: if ($i==1) {
: print "$prefix$k\n";
: } else {
: bt ($i-1, ($prefix || $k) ? "$prefix$k" : "");
: }

o***g
发帖数: 2784
5
递归算法本身的计算顺序是一个树的深度搜索
每一个节点都相同的method就好了(情况复杂的可能是有多个method的相互嵌套)
根节点的地方可以有硬编码
叶子的地方一定要能返回
这个例子我们可以这样安排这些数(如果i=3)
000-999
000-099 100-199 ..... 900- 999 (10个节点)
000-009 010-019.................................. 990-999 (100个节点)
000 001 002 ...................................998 999 (1000个节点)
从这个树能够发现规律,每一个节点上的数都是这样组成的:
开头的一段都是一样的,然后有一个数是固定的,后面若干位都是完全待定的
比如010-019,"0"是开头的,"1"是固定的,最后一位是待定的
再比如200-299,""是开头的,"2"是固定的,最后两位是待定的
所以,递归的method有三个参数,就这个意思
到叶子的时候,待定的
1 (共1页)
进入Programming版参与讨论
相关主题
recurvion真的很难懂~~[转载] 简单的题都不敢做了.
树的前序遍历面试题 -算法?
How to detect overflow in C?Help with a simple c-shell script.
how to initialize this struct.[合集] google interview question
[合集] Solve this task using recursion. how to ?any thoughts about matlab
MatLab Code有人研究过BitCoin的算法和通讯协议吗? (转载)
how to code this question of LinkedIn (转载)LSTM 是不是坨屎?
如何编程实现循环嵌套的次数?reverse LL recursively
相关话题的讨论汇总
话题: int话题: input话题: print话题: prefix话题: void