| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 573 人关注过本帖
标题:〓同志们看看〓
只看楼主 加入收藏
Tianyin1019
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2006-5-8
收藏
 问题点数:0 回复次数:5 
〓同志们看看〓

置了整数1到n的n*n矩阵,每一行每一列对角线和相等

算法:首先顶行中央填1
向左上方移动
按递增次序填入空格
如果当前位置已在顶行,最下行视为其顶行 如果当前位置已在最左行行,最右行视为其左行行 如果移动时,左上方有数,直接下移

例如
15 8 1 24 17
16 14 7 5 23
22 20 13 6 4
3 21 19 12 10
9 2 25 18 11

#include<stdio.h>
void main()
{
int i,j,n,k,a[100][100];
scanf("%d",&n);

if(n%2==0)
printf("Input number must be an odd integer");
else {a[0][(n-1)/2]=1;
i=n-1;j=(n-3)/2;
for(k=2;k<(n*n+1);k++)
{if(a[i][j]!=0)a[i-1][j]=k;
else {a[i][j]=k;
i=i--;
j=j--;
if(i<0)i=n-1;
else;
if(j<0)j=n-1;
else;}
}
for(i=0;i<n;i++)
{for(j=0;j<n;j++)
printf("%4d",a[i][j]);
printf("\n");}
}
}
我同学说这个不行,高手给个完整的能实现的吧!!!!急用!!

搜索更多相关主题的帖子: 同志 左上方 void int 
2006-05-29 22:57
feng1256
Rank: 4
等 级:贵宾
威 望:14
帖 子:2899
专家分:0
注 册:2005-11-24
收藏
得分:0 

楼主要注意代码风格!
[CODE]

#include "stdio.h"
#define N 15
int main()
{
int i,j,a[N][N]={0}; /*数字不大,就不用动态数组,要初始化*/
int n,k=1;

scanf("%d",&n);
if(n%2==0 || n<1 || n>15) /*大于15的不好显示*/
{
printf("Input error!\n");
exit(-1);
}
i=0,j=n/2;
a[i][j]=k++;
while(k<=n*n)
{
if(i==0)
i=n;
if(j==0)
j=n;
if(a[i-1][j-1]==0)
a[--i][--j]=k++;
else
{
if(i==n||j==n)
i%=n,j%=n;
a[++i][j]=k++;
}
}
printf("\n\n");
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
printf("%-5d",a[i][j]);
printf("\n");
}
return 0;
}


[/CODE]


叁蓙大山:工謪、稅務、嗣發 抱歉:不回答女人的问题
2006-05-30 01:02
神vLinux飘飘
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:浙江杭州
等 级:贵宾
威 望:91
帖 子:6140
专家分:217
注 册:2004-7-17
收藏
得分:0 
太晚了....不过告诉你,这个在数学中叫幻方,有奇数和偶数之分,也有正方形和任意矩形之分。

上网络可以GOOGLE到

淘宝杜琨
2006-05-30 01:03
feng1256
Rank: 4
等 级:贵宾
威 望:14
帖 子:2899
专家分:0
注 册:2005-11-24
收藏
得分:0 
确实如此,以前见过专门研究这个的帖子,有很多方法

叁蓙大山:工謪、稅務、嗣發 抱歉:不回答女人的问题
2006-05-30 01:06
Tianyin1019
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2006-5-8
收藏
得分:0 
感谢2楼的大哥,我以后会注意的!

努力学习编程!!!!!!
2006-05-30 07:10
–★–
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:1512
专家分:0
注 册:2006-5-1
收藏
得分:0 
以下是引用Tianyin1019在2006-5-29 22:57:00的发言:

置了整数1到n的n*n矩阵,每一行每一列对角线和相等

算法:首先顶行中央填1
向左上方移动
按递增次序填入空格
如果当前位置已在顶行,最下行视为其顶行 如果当前位置已在最左行行,最右行视为其左行行 如果移动时,左上方有数,直接下移

真有“同学说这个不行”吗?其实你编得满好的,除非老师有别的要求


落霞与孤鹜齐飞,秋水共长天一色! 心有多大,路有多宽。三教九流,鸡鸣狗盗。兼收并蓄,海纳百川。
2006-05-30 08:31
快速回复:〓同志们看看〓
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018775 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved