LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
12
返回列表 发新帖
楼主: mantou

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

[复制链接]
 楼主| 发表于 2002-11-9 20:02:06 | 显示全部楼层
已经很厉害了!!!

让我们受益匪浅, 希望以后还能够给我们介绍一些算法哦!!

这也是我们要学程序设计的基础!!
我们这方面的资料少,大虾们不要吝啬哦!
发表于 2002-11-11 15:48:06 | 显示全部楼层

单从编程角度讲,这道题没新意

唯一的问题是算法,先要知道一个参数,作为基数。
这道题应该是行数,因为如果设最大数的话,并不是所有数都可以排成这样的对称矩阵的。
cin>>n
n是行数。
那总数是y=(x*x+x)/2
每一行的开始数为这一行的行数x(x<=n)
每一行的成员个数也等于行数i=x 可以用来设空格。
最后是每一行的递减量,第一个递减量等于行数-1,即n-1.
这样算法就完整了。
cin>>n;
int x=1,i=n-1,m;
for(m=1;m<=n;m++)
{
  for(i=n-1;x<=m;i--);
{
cout<<x;
cout<<" "
x=x+i;
}
cout<<endl;
};
大致就这样的。
发表于 2002-11-11 16:03:54 | 显示全部楼层

这样的做2道可以了

没必要满版都是,即使对算法的归纳不是很懂那也属于高中数学的范畴和编程关系不大
 楼主| 发表于 2002-11-11 17:17:49 | 显示全部楼层
first ,Forgive me!!  my C is poor!

i have make a small program myself by use Array!

下面是程序:
#include <stdio.h>

int main()
{  int i,j;
   int a[5][5];
   a[0][0] = 1;

   for(i=1;i<5;i++)
   {
     for(j=0;j<i+1;j++)
     {
       if(j == 0)
         a[j] = i+1;
       else
         a[j] = a[j-1]+5-j;
     }
   }


   for(i=0;i<5;i++)
   {
     for(j=0;j<i+1;j++)
        printf("%5d  ",a[j]);
     printf("\n");
   }
   return 0;
}

下面是结果:
[smallmantou@Smallmantou linuxC]$ ./a.out
    1
    2      6
    3      7     10
    4      8     11     13
    5      9     12     14     15


小弟,写出来的程序,很难看的,有很多的不足,我所要说的是,鼓励大家,把自己的思想表达出来!!
自己写出自己的代码,是很兴奋,快乐的!
发表于 2002-11-11 17:25:01 | 显示全部楼层

你这样的程序没有交互性,要是行数变一变?

你难道还要重写?基于和面向对象的设计理念还是蛮重要的
 楼主| 发表于 2002-11-11 19:53:24 | 显示全部楼层
大家,我要说的是,我的水平很差,对于要指导和一些高手切磋,小弟的能力是不可能的!

小弟也深知,我现在坐在这个斑竹的位置,我自己也很尴尬.
我最初,当斑竹的目的,在顶上,我说的很清楚了,我的目的只是为一些刚开始学用linux的菜鸟,还有很多刚刚学C的人!

我所能做到的不可能满足所有的人! 何况我很菜,
不过,你们大虾之间可以,讨论,我们菜鸟看我们能看的懂的东西!
这样应该可以吧!

其实,很多人都完全比我有更多的能力作个斑竹,我说了,随时可以退下!
同样,我不当斑竹,我还是这样,以我个人的经历,来帮助大家!


我能说的,只有,小弟不才,请原谅!!
发表于 2002-11-14 14:53:25 | 显示全部楼层

这是高程考试的一道题!

原来是要把一个上三角的顺序数字矩阵变成下三角,就是斑竹的那个!要求一一纬数组来实现!它实现的思想就是把数字按下标一个一个换到新位置上。如何检测这个位上的数是否完成换位,我已经忘了!但思想就是那样!
发表于 2002-11-15 17:39:08 | 显示全部楼层
换个方向考虑呢,我觉得前面的算法运算量很大的。
看下面的矩阵,大家有什么发现?如果用右上角那种排法,是不是很简单就能写出来?然后一个对称就过去了?一家之言,大家不要见怪!
1   2  3    4
2  5   6    7
3  6   8    9
4  7   9   10

To:mantou
没有仔细看过你的内容,就发了,不好意思,你就是这个思想。在第一个循环中,如果把j=0改成j=i,这样下面的判断也可以免了。你说是吗?
但这种方法总归不是很好,效率很高,但有点死。当然也可以用molloc实现动态的,可是感觉上总归不是很好。

如果用一维数组,我想在内存中,所有二维和一维本质上是一样的。这样想一想就应该不难实现。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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