CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VB >  基础类

■■■■■算法的题目~我这个题目谁能帮帮我啊~■■■■■

楼主slimpotato(显显)(地狱式恶补英语中..)2004-05-01 20:59:10 在 VB / 基础类 提问

求一算法:  
  求:  
  a1   a2   a3  
  a4   a5   a6  
  a7   a8   a9    
   
  使得每一行的和等于15  
  每一列的和也等于15  
  对角线的和也是15  
  请高手赐教~~`谢谢!  
  问题点数:50、回复次数:11Top

1 楼badbrain(badbrain)回复于 2004-05-01 21:00:55 得分 0

只针对3*3吗?Top

2 楼minl(惯犯)回复于 2004-05-01 21:09:37 得分 0

一般是奇数列的才有解,但这个只是数学问题按顺序往里排就行  
  Top

3 楼slimpotato(显显)(地狱式恶补英语中..)回复于 2004-05-01 21:16:53 得分 0

'每一行  
  a1   +   a2   +   a3   =   15    
  a4   +   a5   +   a6   =   15  
  a7   +   a8   +   a9   =   15  
  '每一列  
  a1   +   a4   +   a7   =   15  
  a2   +   a5   +   a8   =   15  
  a3   +   a6   +   a9   =   15  
  '对角线  
  a1   +   a5   +   a9   =   15  
  a3   +   a5   +   a7   =   15  
   
  求a1,a2,a3,....a9  
  谢谢  
   
  Top

4 楼yinweihong()回复于 2004-05-01 22:26:08 得分 0

有些偶的也有解  
  对于奇:  
  设个数组,如图所示:  
  a1   a2   a3  
  a4   a5   a6  
  a7   a8   a9    
  我先另a2=1  
  然后就可以直接赋值了  
  规律是:  
  右上方即:右上方没数组元素则移到该行最后一个元素a9=2---a9右上方没元素   a4=3---  
  a4右上方位置已被占下移一位:a7=4---右上方a5=5----a3=6按照规则a6=7----a1=8--a8=8  
  a6=9  
  对所有奇数都满足  
  算法自己写吧!!Top

5 楼mycoldboy(寒潭清)回复于 2004-05-01 22:43:18 得分 0

太简单了Top

6 楼northwolves(狼行天下)回复于 2004-05-01 23:51:21 得分 20

最简单的幻方:  
   
  '易知九宫图中间为5,关于中心对称位置之和为10,分析如下:  
   
  '               a                 b                 c  
   
   
  '               d                 5             10-d  
   
   
  '               10-c         10-b         10-a  
   
  'if   a   is   an   odd,c   is   an   odd   ,then   10-a   is   an   odd,10-c   is   odd,so   b,d,10-d,10-b   are   all   odds(paradox)  
     
  'if   a   is   an   odd,c   is   an   even   ,then   10-a   is   an   odd,10-c   is   even,so   b,d,10-d,10-b   are   all   evens(paradox)  
   
  'if   a   is   an   even,c   is   an   odd   ,then   10-a   is   an   even,10-c   is   odd,so   b,d,10-d,10-b   are   all   evens(paradox)  
   
  'if   a   is   an   even,c   is   an   even   ,then   10-a   is   an   even,10-c   is   even,so   b,d,10-d,10-b   are   all   odds(maybe)  
   
  'so   a   ,c   must   be     evens;         b,d   must   be   odds  
   
   
   
   
   
   
  Dim   nine   As   New   Collection  
  Private   Sub   Form_Load()  
  Dim   a   As   Integer,   b   As   Integer,   c   As   Integer,   d   As   Integer,   i   As   Integer  
  For   a   =   2   To   8   Step   2  
  For   b   =   1   To   9   Step   2  
  For   c   =   2   To   8   Step   2  
  For   d   =   1   To   9   Step   2  
  If   a   +   b   +   c   =   15   And   a   +   d   -   c   =   5   And   a   +   c   <>   10   And   b   +   d   <>   10   And   b   <>   5   And   d   <>   5   Then   nine.Add   StrConv(a   &   b   &   c   &   vbCrLf   &   d   &   "5"   &   (10   -   d)   &   vbCrLf   &   (10   -   c)   &   (10   -   b)   &   (10   -   a),   vbWide)   '全角显示  
  Next:   Next:   Next:   Next  
  For   i   =   1   To   nine.Count  
  Debug.Print   "九宫图之"   &   i   &   vbCrLf   &   nine(i)   &   vbCrLf  
  Next  
  End   SubTop

7 楼northwolves(狼行天下)回复于 2004-05-02 00:07:10 得分 30

Sub   huanfang(ByVal   n   As   Integer)  
  Me.Caption   =   n   &   "   阶幻方"  
  Cls  
  ForeColor   =   vbBlue  
  FontSize   =   12  
  Dim   num()   As   Integer  
  If   n   Mod   2   =   0   Then   Exit   Sub  
  ReDim   num(-1   To   n   -   1,   n   -   1)   As   Integer  
  For   j   =   0   To   n   -   1  
  For   i   =   0   To   n   -   1  
  num(-1,   i)   =   IIf(i   >=   (n   -   1)   /   2,   0,   n   *   (n   +   1))   +   (i   -   (n   -   1)   /   2)   *   (n   +   2)   +   1  
  num(j,   i)   =   IIf(j   =   0,   num(-1,   i),   1   +   (n   *   n   +   num(j   -   1,   i)   +   IIf(num(j   -   1,   i)   Mod   n   =   0,   0,   n))   Mod   n   ^   2)  
  Print   Tab(4   *   i);   Space(4   -   Len(Str(num(j,   i))))   &   num(j,   i);  
  Next  
  Print  
  Next  
  End   Sub  
  Private   Sub   Form_Click()  
  huanfang   3  
   
  huanfang   25  
  End   Sub  
  Top

8 楼pigpag(Pigpag - A GRE Fighter)回复于 2004-05-02 00:09:59 得分 0

九子斜列  
  左右互易  
  上下对换  
  四维推出  
   
  这个是等差数列的情况。非等差数列只要设三个未知数,就能把其它所有值表示出来了。再用约束条件循环演算一下就可以了。Top

9 楼lsftest()回复于 2004-05-02 01:14:54 得分 0

典型的三阶幻方:  
  http://www.oh100.com/teach/student/quwei/shuxuequwei/200208/2002050202297.htmlTop

10 楼slimpotato(显显)(地狱式恶补英语中..)回复于 2004-05-02 10:10:43 得分 0

谢谢各位啦~!Top

11 楼slimpotato(显显)(地狱式恶补英语中..)回复于 2004-05-02 10:18:12 得分 0

谢谢northwolves(野性的呼唤)   的讲解  
  和详细的算法!Top

相关问题

  • 求解C++算法题目
  • 求解C++算法题目
  • 经典题目求算法
  • 如何实现算法的代理,这个题目好像有点难度啊!!!!!!!!!!!!!!!!!
  • 一个有趣的题目,求算法!
  • 请问一个算法题目
  • 请大家解一个算法题目!
  • 请求题目算法!急!!谢谢!!!
  • 求教两道算法题目
  • 请教3个算法题目:

关键词

  • 算法
  • odds
  • 右上方
  • huanfang
  • nine
  • paradox
  • iif
  • 幻方
  • num
  • 谢谢

得分解答快速导航

  • 帖主:slimpotato
  • northwolves
  • northwolves

相关链接

  • Visual Basic类图书
  • Visual Basic类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo