标题:关于右上走势的奇数魔方振,不懂错在哪,麻烦帮忙看看!!!!
只看楼主
鈴蘭
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:48
专家分:145
注 册:2013-4-1
结帖率:75%
已结贴  问题点数:20 回复次数:2 
关于右上走势的奇数魔方振,不懂错在哪,麻烦帮忙看看!!!!
右上走势就是:(先将所有位置都填为0)从第0行最中间开始,即a[0][N/2]=1,接着就是右上方的为2,如果实际的右上方不存在,就将上下或左右对接,找到虚拟的右上方,即a[-1][2]不存在,则虚拟右上方为a[2][2]=2;如果右上方为非0数,就填在原来位置的下方
#include<iostream>
using namespace std;
const int N=3;
void main()
{
    int a[N][N]={0};
    int i,j,t=2;
    a[0][N/2]=1;
    for(i=0,j=N/2;t<=N*N;)
            {
                i-=1;
                j+=1;
                if(i<0)
                    i+=N;
                if(j>=N)
                    j-=N;
                if(a[i][j]==0)
                    a[i][j]=t++;
                else if(i==N-1&&j==0)
                {
                    i=i-N+2;
                    j=j+N-1;
                    a[i][j]=t++;
                }
                else
                {
                    i-=1;
                    j+=2;
                    a[i][j]=t++;

                }
            }
    for(i=0;i<N;i++)
        for(j=0;j<N;j++)
        {
            cout<<a[i][j]<<"    ";
            if(j==N-1)
                cout<<endl;
         }
}
理想运行后的结果应该是
8 1 6
3 5 7
4 9 2
但是运行后的结果竟然是
4 1 6
8 5 0
7 9 2
不懂错在哪
求解啊


[ 本帖最后由 鈴蘭 于 2013-5-2 18:35 编辑 ]
搜索更多相关主题的帖子: include 魔方 走势 
2013-05-02 16:57
邓士林
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:淮河河畔
等 级:贵宾
威 望:61
帖 子:2391
专家分:13384
注 册:2013-3-3
得分:20 
程序没有错,我花了半天给你追踪了代码,悲剧,到第三次就出错了,原因是i=-1了,a[i][j]就不对了啊!你自己追踪下然后修改就明白了,你这题目也没个描述,所以无法针对性给予修改

Maybe
2013-05-02 17:44
鈴蘭
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:48
专家分:145
注 册:2013-4-1
得分:0 
回复 2楼 邓士林
谢谢,是我马虎了

菜鸟一枚,回复如有错误,还望谅解!
2013-05-02 18:58



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-406083-1-1.html




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

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