| 编程中国 | 业界新闻 | 技术文章 | 视频教程 | 下载频道 | 程序源码 | 个人空间 | 编程论坛
全能ASP/PHP/ASP.NET主机,支持月付专业 MSSQL 数据库空间,支持月付专业 MySQL 数据库空间,支持月付学习型 ASP/PHP/ASP.NET 主机 30元/年
高端软件开发 = 年薪十万不是梦   
共有 583 人关注过本帖
标题:求鞍点。和魔方。。。。。
收藏  订阅  推荐  打印
我想要飞
Rank: 2
等级:注册会员
帖子:121
积分:1310
注册:2004-6-15
求鞍点。和魔方。。。。。

鞍点:在一个数组中找到一行中最大的数,但它又是这一列中最小的数!就是鞍点。也可以没有~!

魔方:就是在一个数组中,它的每一行,每一列,和对角线之和均等,例如:

8 1 6

3 5 7

4 9 2

要求打印出由1到N的平方的自然数构成的魔方阵

[此贴子已经被作者于2004-07-18 14:22:56编辑过]

2004-7-17 10:23
我想要飞
Rank: 2
等级:注册会员
帖子:121
积分:1310
注册:2004-6-15

怎么没人顶啊~~~~~~~~~~~~~~~~~~~~


个人宣言;黑暗的腹地,我睁开双眼, 世界哑口无言。。。
2004-7-18 01:54
神vLinux飘飘
Rank: 12Rank: 12Rank: 12
等级:贵宾
威望:87
帖子:6085
积分:61226
注册:2004-7-17

那不是魔方,是幻方,我回去想想看~

泛出微微的蓝色的光,像有生命般涌动着,闪烁着,平滑而优美,达到了机械和美学结合的最高境界,向一件艺术品一样,默默的展示着,寂寞而孤傲,只有宇宙才能证实它的存在,只有永恒可以于它并存
2004-7-18 07:28
天晴
Rank: 1
等级:新手上路
帖子:4
积分:140
注册:2004-6-26

幻方的程序:

#include <stdio.h>

#define n 5

main()

int magic[n][n]={0};

int i,j,k,s=1;

magic[1][n/2]=1;

for(i=1,j=n/2,k=1;k<(n-2)*(n-2);i--,j++,k++)

{if(i==1&&j!=n-2) i=n-1;

else if((i==1&&j==n-2)||magic[i-1][j+1!=0) {i+=2;j-=1;}

else if(i!=1&&j==n-2) j=0;

magic[i-1][j+1]=s+1;

}

for(i=1;i<n-1;i++)

{

for(j=1;j<n-1;j++)

printf("%5d",magic[i][j]);

printf("\n");

}

}


我说我能飞,只要再跑快一点!
2004-7-18 13:24
我想要飞
Rank: 2
等级:注册会员
帖子:121
积分:1310
注册:2004-6-15

能注释一下么

楼上的朋友! 不太懂!


个人宣言;黑暗的腹地,我睁开双眼, 世界哑口无言。。。
2004-7-18 14:21
神vLinux飘飘
Rank: 12Rank: 12Rank: 12
等级:贵宾
威望:87
帖子:6085
积分:61226
注册:2004-7-17

#include&lt;stdio.h&gt;
main()
{
int a[100][100],i,j,x,y,n;
   for(;;)
      {
      clrscr();
      printf("\nPlease enter the order of the magic square:");
      scanf("%d",&n);
      if(n%2==0) printf("\n对不起,你必须输入一个奇数");
      else if(n&gt;=101||n&lt;=1) printf("\n您输的奇数必须要在3~99之间");
      else
  {
  x=0;y=(n-1)/2;
  for(i=0;i&lt;n;i++)
     for(j=0;j&lt;n;j++) a[i][j]=0;
     a[0][(n-1)/2]=1;
     for(i=2;i&lt;=(n*n);i++)
        {
        x==0?x=n-1:x--;
        y==0?y=n-1:y--;
        if(a[x][y]!=0)
   {
   x==(n-1)?x=0:x++;
   x==(n-1)?x=0:x++;
   y==(n-1)?y=0:y++;
   }
        a[x][y]=i;
        }
     printf("\n");
     for(i=0;i&lt;n;i++)
        {
        printf("              ");
        for(j=0;j&lt;n;j++)
    {
    printf("%d ",a[i][j]);
    if(a[i][j]&lt;10) printf(" ");
    }
        printf("\n");
        }
  }
  getch();
      }
}

泛出微微的蓝色的光,像有生命般涌动着,闪烁着,平滑而优美,达到了机械和美学结合的最高境界,向一件艺术品一样,默默的展示着,寂寞而孤傲,只有宇宙才能证实它的存在,只有永恒可以于它并存
2004-7-18 15:30
神vLinux飘飘
Rank: 12Rank: 12Rank: 12
等级:贵宾
威望:87
帖子:6085
积分:61226
注册:2004-7-17

首先,这个程序只能算N为奇数的情况,偶数的方法正在回忆中,这些高中老师都是讲过的~

其次,我根本不清楚晴天的程序在干什么~所以,我还是把我的算法贴了出来

再次,以后这么难的题目换个地方发啊~想了我一个早上,头都大了!

由于对程序的修修补补,格式方面难免有疏忽,而且具体计算过程早就乱七八糟,可以说是我打了七八次补丁才修补好的~请见谅~

奇数的计算方法:

例子:边长为3的幻方填写过程(该过程只适用于奇数幻方)

1必须填写在第一行的中间

② 然后斜向左上按顺序写N个(N的取值为幻方之边长)这里取为3

请注意,因为1所在的位置为顶行,再向上即超出范围,超出的范围从下面开始。所以2就放在了左下角。同理,当超出上下左右边界时候,即从另一头算起。

6

1

8

7

5

3

2

9

4

③ 然后取3的下面一格为4的位置,并重复①到③的过程写入4~9

~完成了!

大家如果有兴趣的话,可以自己推算出579等等奇数的幻方。偶数的我正在回忆中,说不定可以去问问老师….郁闷….


泛出微微的蓝色的光,像有生命般涌动着,闪烁着,平滑而优美,达到了机械和美学结合的最高境界,向一件艺术品一样,默默的展示着,寂寞而孤傲,只有宇宙才能证实它的存在,只有永恒可以于它并存
2004-7-18 15:32
我想要飞
Rank: 2
等级:注册会员
帖子:121
积分:1310
注册:2004-6-15

谢谢~飘飘!虽然你写的程序我现在还没看懂 ,但我会记下来慢慢的看的。。

怎么没人求鞍点啊!

这到题我想了好久也没有代码!


个人宣言;黑暗的腹地,我睁开双眼, 世界哑口无言。。。
2004-7-18 17:53
神vLinux飘飘
Rank: 12Rank: 12Rank: 12
等级:贵宾
威望:87
帖子:6085
积分:61226
注册:2004-7-17

鞍点我没学过,但是看你的意思还是看得明白的,可是你不给我一个N维数组我怎么写代码啊?

就是让你把题目写出来,我们大家一起讨论讨论呀


泛出微微的蓝色的光,像有生命般涌动着,闪烁着,平滑而优美,达到了机械和美学结合的最高境界,向一件艺术品一样,默默的展示着,寂寞而孤傲,只有宇宙才能证实它的存在,只有永恒可以于它并存
2004-7-18 18:59
共有 582 人关注过本帖
关于我们 | 广告合作 | 编程中国 | 清除Cookies | Archiver | WAP | TOP

编程中国 版权所有,并保留所有权利。鲁ICP备08000592号
Powered by Discuz, Processed in 0.058283 second(s), 9 queries.
Copyright©2004-2008, BCCN.NET, All Rights Reserved