- 论坛徽章:
- 0
|
编译后运行 ./a.out 4即可
- #include <stdlib.h>
- #include <stdio.h>
- void func(int *status, int count, int deep)
- {
- int i;
- if (count<=0)
- {
- if (count == 0)
- {
- for (i=0;i<deep;i++)
- printf("%d ", *(status+i));
- printf("\n");
- }
- }
- else
- {
- for (i=0;i<3;i++)
- {
- *(status+deep) = i+1;
- func(status, count-(i+1), deep+1);
- }
-
- }
-
-
- }
- int main(int argc, char *argv[])
- {
- int i, *status;
- if (argc<2)
- {
- printf("too few arguments.\n");
- return -1;
- }
- i = atoi(argv[1]);
- status = (int*)malloc(sizeof(int)*i);
- func(status, i, 0);
- free(status);
- return 0;
- }
复制代码
原帖由 ITHJF 于 2007-8-21 11:23 发表 ![]()
某人上台阶,他一步可迈一个台阶,两个台阶或三个台阶,共有n个台阶,编程输出他所有可能上法。
例如n=4时,则有(1 1 1 1)、(1 1 2)、(1 2 1)、(1 3)、(2 1 1)、(2 2)、(3 1)等7种不同的上法。
...
[ 本帖最后由 ypxing 于 2007-8-21 12:43 编辑 ] |
|