LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 3771|回复: 17

先出道题目!大家一起来做一做!

[复制链接]
发表于 2002-11-7 21:45:53 | 显示全部楼层 |阅读模式
如何输出这个格式
在vc中要输出下面的格式
1
2   5
3   6   8
4   7   9   10

我想在程序控制时是按列输出而不是按行输出,即先输出
1
2
3
4
然后再回去输出第二列、第三、第四列
发表于 2002-11-8 15:26:31 | 显示全部楼层
我的想法是先用一下数组把这几个数装起来,再实现输出.
发表于 2002-11-8 16:07:58 | 显示全部楼层
最初由 David 发布
我的想法是先用一下数组把这几个数装起来,再实现输出.


兄弟的方法简是简单,但是如果不是1 to 10呢?
如果是1 to 9999999呢?兄弟难道自己装进去。

个人认为,一个二维数组指针就可以解决问题。
发表于 2002-11-8 17:27:31 | 显示全部楼层
下面是程序:
#include <stdio.h>
main()
{
        int i,j,n;
        while(1){
        printf("lease input a num:");
        scanf("%d",&n);
        if(n==0)
                break;
        for(i=1;i<n+2;i++) {
                for(j=0;j<i;j++)
                {
                        printf("%d ",i+j*n-j*(j-1)/2);
                }
                printf("\n");
        }
}
}
发表于 2002-11-8 17:28:25 | 显示全部楼层
下面是结果:
Please input a num:1
1
2 3
Please input a num:2
1
2 4
3 5 6
Please input a num:3
1
2 5
3 6 8
4 7 9 10
Please input a num:4
1
2 6
3 7 10
4 8 11 13
5 9 12 14 15
Please input a num:0
 楼主| 发表于 2002-11-9 11:44:56 | 显示全部楼层
一个对于我们菜鸟和疑惑的问题就是,要怎么样才能推出里面的关系公式?

如何去分析算法呢?
能否给我们点启发?

我真的有些无头绪.   谢谢大虾!
发表于 2002-11-9 12:07:41 | 显示全部楼层
我想在程序控制时是按列输出而不是按行输出
....
然后再回去输出第二列、第三、第四列
I don't quite understand this part.  What does ``output by column'' mean?  Must we print 4 before printing 5 (that is, printing characters above the current line, which I think impossible in standard C)?

Otherwise dany's code looks fine to me.
发表于 2002-11-9 12:35:24 | 显示全部楼层
最初由 mantou 发布
一个对于我们菜鸟和疑惑的问题就是,要怎么样才能推出里面的关系公式?

如何去分析算法呢?
能否给我们点启发?

我真的有些无头绪.   谢谢大虾!

Rember the formula:
S=1+2+......+(n-1)
  =(n-1)*n/2.
Then i blieve you will understand the program
through your analysis!
 楼主| 发表于 2002-11-9 15:32:26 | 显示全部楼层
i can understand the pro.
i means,when you meet a subject! how to work out the method !

eg:
1
2 5
3 6 8
4 7 9 10

then how do you get " i+j*n-j*(j-1)/2" ???

i am lack in this field!   
DAXIA,  what i want you to do ,i hope you can supply some detail of the SUANFA !!!

how to learn more to work out the problem!
how do you find the method!

what we are lack is the exprience for how to find the method!

  thank you!
发表于 2002-11-9 15:50:51 | 显示全部楼层
当要解决一个algorithm的时候,我的通常的作法是归纳,通过分析一个个的实例找出它们之间的关系,比如说上面的那个算法,其实通过观察,会发现每一列的后面的一个数是在前面的一个数的基础上面加上一个变量,而这个变量是有一定的规律,这个变量也就是差值是等差数列。这些数一共有n列,第i行的第一个数是i,第二个数是i+n-1,第三个是(i+n-1)+(n-2),...第j个就是
(i+n-1)+(n-2)+......+(n-j+1)=i+j*n-j*(j-1)/2.然后注意j 的取值范围是多少就行了!
呵呵,我也只能说这么多,其实我也很菜的说。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表