在线请教:一道简单的C++矩阵编程题目。

lingyun2003 2005-08-19 09:15:47
苦思半天,可能思路不对,特请教大家详细的代码示例:

用C++编程生成输出一个如下的矩阵:它满足的条件是:让它的每一行无素之和,每一列元素之和,

以及两对角线之和都相等。

谢谢!

...全文
557 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
xukexuan5 2010-06-24
  • 打赏
  • 举报
回复
bu dong wo bu zhi dao zen me jie
xiaocai0001 2005-08-23
  • 打赏
  • 举报
回复
今天在CSDN上看到的解法
具体看下面帖
http://community.csdn.net/Expert/topic/4007/4007277.xml?temp=.8199732

[以下转帖]
1)、当n为奇数时:采用连续斜行赋值法。首先把数1定在正中的下一格,数2定在1的斜行右下格,依此类推。即一般数i定在数i-1的斜行右下格(行数x列数y均增1)。直至当数i为n的倍数时,定在上一个数i-1格正下方的第2格(行数x增2,列数y不变)。按上述操作,格的位置(x,y)若超出n行n列的范围,按模n定位。即若出现x>n,则定在第x-n行;出现y>n,则定在第y-n列。
  2)、当n为4的倍数时:采用对称元素交换法。首先把数n×n-1按行从上至下,奇数行从左至右,偶数行从右至左顺序填人方阵的n×n格。然后,把方阵的所有4×4子方阵中的两对角线上位置(即(i-j) mod 4=0||(i+j-1) mod 4=0,其中i为行号,j为列号)上的数固定下来不动;所有其它位置上的数关于方阵中心作对称交换,也就是把元素a(i,j)与元素a(n+1-i,n+1-j)的值交换。
3)、当n为非4倍数的偶数(即4m+2形)时:首先把大方阵分解为4个奇数(2m+1阶)子方阵。上述奇数阶魔方给分解的4个子方阵对应赋值,上左子方最小(i),下右子次小(i+v),下左子方最大(i+3v),上右子方次大(i+2v),即4个子方阵对应元素相差v,其中v=n*n/4,然后作相应的元素交换:
  a(i,j)与a(i+u,j)在同一列做对应交换(j<t或j>n-t+2)
  a(t,1)与a(t+u,1);a(t,t)与a(t+u,t)两对元素交换
  其中u=n/2,t=(n+2)/4
  上述交换使每行每列与两对角线上元素之和相等。
xiaocai0001 2005-08-21
  • 打赏
  • 举报
回复
嘿嘿~~
代码没有~
奇数阶的知道怎么填
偶数阶和双偶数阶的忘了
lingyun2003 2005-08-21
  • 打赏
  • 举报
回复
谢谢楼上的,没有代码吗?
xiaocai0001 2005-08-20
  • 打赏
  • 举报
回复
这个有固定算法的
奇数阶、偶数阶、双偶数阶是不同的。

下面这个是5阶的,行列对角线和为65
-----------------
17 24 1 8 15
23 5 7 14 16
4 6 13 20 22
10 12 19 21 3
11 18 25 2 9

7阶的:
--------------------
30 39 48 1 10 19 28
38 47 7 9 18 27 29
46 6 8 17 26 35 37
5 14 16 25 34 36 45
13 15 24 33 42 44 4
21 23 32 41 43 3 12
22 31 40 49 2 11 20
sunden 2005-08-20
  • 打赏
  • 举报
回复
这是一个算法题哈,放这边可能不太合适.3*3的到是有中国古代的九宫图的现成方法.不过不是算法,大于三的算是到是不知道,不过N不大时,穷举比想算法简单哈!

PS:楼主用的不仅是是五笔输入法,而且用得不怎么样.
raynors 2005-08-20
  • 打赏
  • 举报
回复
这是个数学问题N>2都有通解 如果是求所有解 我想只有穷举了
JOHE2003 2005-08-20
  • 打赏
  • 举报
回复
我首先认为把这个矩阵设成一个对角矩阵比较好想一些。。。。。。暂时就这么多。。。等待,,,,
lingyun2003 2005-08-20
  • 打赏
  • 举报
回复
不好意思,正式楼上说的,3*3阶矩阵,它满足的条件是:让它的每一行无素之和,每一列元素之和,

以及两对角线之和都相等 请问如何实现呢? 谢谢
kv4000 2005-08-19
  • 打赏
  • 举报
回复
他的意思应该是:3*3阶矩阵 我认为 就是楼上说的
xiaocai0001 2005-08-19
  • 打赏
  • 举报
回复
首先应该说明它是个方阵,其次还要给出矩阵中所埴的数的限制
楼主是不是说
像这样的题1-9填入3×3矩阵,使得让它的每一行元素之和,每一列元素之和,以及两对角线之和都相等?

------------
话外:楼主用的是五笔输入法~~~
mituzhishi 2005-08-19
  • 打赏
  • 举报
回复
这明明是一个数学题目。

数组元素都为 N 的数组肯定行。(N为实数)

64,637

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧