e******d 发帖数: 310 | 1 Problem:
Given a n-step ladder, we can climb 1 or 2 steps each time. Please print out
all possible climbing ways to reach step-n.
For example n = 3; the output should be
1 2
1 1 1
2 1
My solution is attached in the end. Could you please help me improving the
code.
Thank you a lot.
=======================================
void printFioStep(int n)
{
assert(n > 0);
if( n == 1)
{
printf("%d \n", n);
return;
}
else if(n == 2)
{
printf("%d %d \n", 1, 1);
printf("%d \n |
p******r 发帖数: 2999 | 2 呵呵,这题应该用DP,从后往前推
慢慢想想吧。。。
out
the
【在 e******d 的大作中提到】 : Problem: : Given a n-step ladder, we can climb 1 or 2 steps each time. Please print out : all possible climbing ways to reach step-n. : For example n = 3; the output should be : 1 2 : 1 1 1 : 2 1 : My solution is attached in the end. Could you please help me improving the : code. : Thank you a lot.
|
X****r 发帖数: 3557 | 3 I didn't look closely at your code, but it seems way too complicated
at first glance. Why don't you just use recursion? The code should be
very simple, like:
void printStepsImpl(int x[], int k, int n) {
if (n--) {
x[k] = 1;
printStepsImpl(x, k+1, n);
if (n--) {
x[k] = 2;
printStepsImpl(x, k+1, n);
}
} else {
int i;
for (i = 0; i < k; i++) {
printf("%d ", x[i]);
}
printf("\n");
}
}
void printSteps(int n) {
int x[n]; // gcc extension, or t
【在 e******d 的大作中提到】 : Problem: : Given a n-step ladder, we can climb 1 or 2 steps each time. Please print out : all possible climbing ways to reach step-n. : For example n = 3; the output should be : 1 2 : 1 1 1 : 2 1 : My solution is attached in the end. Could you please help me improving the : code. : Thank you a lot.
|
z****e 发帖数: 2024 | 4 红猪侠是不是搞竞赛出身的?
家里是不是教育工作者知识分子家庭啊?
【在 X****r 的大作中提到】 : I didn't look closely at your code, but it seems way too complicated : at first glance. Why don't you just use recursion? The code should be : very simple, like: : void printStepsImpl(int x[], int k, int n) { : if (n--) { : x[k] = 1; : printStepsImpl(x, k+1, n); : if (n--) { : x[k] = 2; : printStepsImpl(x, k+1, n);
|
X****r 发帖数: 3557 | 5 这个也能看出来吗?说说看你为什么这么认为。
【在 z****e 的大作中提到】 : 红猪侠是不是搞竞赛出身的? : 家里是不是教育工作者知识分子家庭啊?
|
z****e 发帖数: 2024 | 6 我是真相帝啊。哈哈哈。见多识广吧?
【在 X****r 的大作中提到】 : 这个也能看出来吗?说说看你为什么这么认为。
|
z****e 发帖数: 2024 | 7 有时候我也很佩服自己的这个能力。
【在 X****r 的大作中提到】 : 这个也能看出来吗?说说看你为什么这么认为。
|
X****r 发帖数: 3557 | 8 你去当程序员太可惜了。
说说看怎么看出来的?
【在 z****e 的大作中提到】 : 有时候我也很佩服自己的这个能力。
|
z****e 发帖数: 2024 | 9 我也不知道具体,就是一种直觉。
并没有过详细的推理,但是今天看到你那个回帖,正在研读的时候,突然一道灵光照下
,这个论断赫然出现在我的脑海,并且让我坚定的相信。于是就写了下来。
据我妈说,当年我爷爷去世前一天,我还只有3岁好像,不记事的年纪。大家都在周围
照顾,我突然和家里人说,爷爷上天了。结果的二天,老人家就去世了。
可是当时也没人交给我说,上天就是去世死亡的意思。
【在 X****r 的大作中提到】 : 你去当程序员太可惜了。 : 说说看怎么看出来的?
|
z****e 发帖数: 2024 | 10 以前也是,大学的时候,经常梦见和一堆不认识的老外说话,结果就糊里糊涂的出国了。
目前还没有梦见找到工作,估计等梦见了,就快了。 |
|
|
S*********g 发帖数: 5298 | 11 I guess more than 50% of this BBS's ID had some experience in competition at
some point.
Similar for the 2nd point.
【在 z****e 的大作中提到】 : 红猪侠是不是搞竞赛出身的? : 家里是不是教育工作者知识分子家庭啊?
|
z****e 发帖数: 2024 | 12 通过竞赛能直接到全国重点大学,或者大学以后去得国际竞赛成绩的,
家里是教授或者职业教师的,
应该是很少的。
at
【在 S*********g 的大作中提到】 : I guess more than 50% of this BBS's ID had some experience in competition at : some point. : Similar for the 2nd point.
|
t****t 发帖数: 6806 | 13 搞竞赛!=通过竞赛直接到全国重点大学吧.
家里是职业教师的或许不多, 不过家里是知识分子的应该很多才对.
【在 z****e 的大作中提到】 : 通过竞赛能直接到全国重点大学,或者大学以后去得国际竞赛成绩的, : 家里是教授或者职业教师的, : 应该是很少的。 : : at
|
r****t 发帖数: 10904 | 14 梦到哪个队拿冠军了没(世界乒)?
了。
【在 z****e 的大作中提到】 : 以前也是,大学的时候,经常梦见和一堆不认识的老外说话,结果就糊里糊涂的出国了。 : 目前还没有梦见找到工作,估计等梦见了,就快了。
|
z****e 发帖数: 2024 | 15 突然想起来,
你那句gcc extension。。。
为什么x[n]好像是动态确定的呢?
你那个extension是说什么意思?
【在 X****r 的大作中提到】 : I didn't look closely at your code, but it seems way too complicated : at first glance. Why don't you just use recursion? The code should be : very simple, like: : void printStepsImpl(int x[], int k, int n) { : if (n--) { : x[k] = 1; : printStepsImpl(x, k+1, n); : if (n--) { : x[k] = 2; : printStepsImpl(x, k+1, n);
|
X****r 发帖数: 3557 | 16 在栈上的动态长度数组是不符合C语言(C89)的规定的,但是gcc扩展了C语言,
允许这个。我就偷懒用了。
【在 z****e 的大作中提到】 : 突然想起来, : 你那句gcc extension。。。 : 为什么x[n]好像是动态确定的呢? : 你那个extension是说什么意思?
|
r****t 发帖数: 10904 | 17 C99 里面是有动态长度数组的,大部分 compiler 也支持,是不是 c++ 里面是不合法
的?必须用
vector? 不用动态长度数组写程序很麻烦啊,很多问题需要动态长度数组。
【在 X****r 的大作中提到】 : 在栈上的动态长度数组是不符合C语言(C89)的规定的,但是gcc扩展了C语言, : 允许这个。我就偷懒用了。
|
r****t 发帖数: 10904 | 18 ft, 正说这个呢,我的 compiler 就不支持,只能用 C90, 太麻烦了。
【在 r****t 的大作中提到】 : C99 里面是有动态长度数组的,大部分 compiler 也支持,是不是 c++ 里面是不合法 : 的?必须用 : vector? 不用动态长度数组写程序很麻烦啊,很多问题需要动态长度数组。
|