| 编程中国 | 业界新闻 | 技术文章 | 视频教程 | 下载频道 | 程序源码 | 个人空间 | 编程论坛
全能ASP/PHP/ASP.NET主机,支持月付专业 MSSQL 数据库空间,支持月付专业 MySQL 数据库空间,支持月付学习型 ASP/PHP/ASP.NET 主机 30元/年
高端软件开发 = 年薪十万不是梦   
共有 328 人关注过本帖
标题:请指教!!关于魔方阵数据结构问题
收藏  订阅  推荐  打印
oscar19850808
Rank: 1
等级:新手上路
帖子:3
积分:142
注册:2008-6-22
请指教!!关于魔方阵数据结构问题

#include <stdio.h>
#include <stdlib.h>
#define MAX_NUM 500    /*这里可以修改最大阶*/
int main()
{
    int rows = 0, center = 0, iArray[MAX_NUM][MAX_NUM];
    int RowSet = 0, LineSet = 0, newRowSet = 0, newLineSet = 0;
    int i = 0, j = 0;
    int okNum = 0;
   
    // set the items of array "iArray" to be 0
    for ( i = 0; i < MAX_NUM; i++ )
        for ( j = 0; j < MAX_NUM; j++ )
            iArray[i][j] = 0;
   
    // get the rows number
    while ( 1 )
    {
        printf("输入行数:\n");
        scanf("%d", &rows);
        if ( rows <= MAX_NUM )
        {
                rows -= 1;
                break;
        }
        else {
             printf("行数必须在 0 和 %d 之间, 请重新", MAX_NUM);
        }
    }   
   
    // set number '1'
    center = rows / 2;
    iArray[0][center] = 1;
   
    // initialize the okNum, RowSet and LineSet
    okNum = 1;
    RowSet = 0;
    LineSet = center;
   
    // set each item in "iArray"
    while ( okNum < (rows + 1) * (rows + 1) )
    {
          if ( RowSet == 0 && LineSet == rows )
          {
               RowSet += 1;
          }
          else {
                    newRowSet = (RowSet == 0) ? rows : RowSet - 1;
                    newLineSet = (LineSet == rows) ? 0 : LineSet + 1;         
         
                   if ( iArray[newRowSet][newLineSet] != 0 )
                   // there is already a number here!
                   {
                            RowSet = (RowSet == rows) ? 0 : RowSet + 1;
                            //RowSet += 1;
                   }
                   else{
                            RowSet = newRowSet;
                            LineSet = newLineSet;
                   }
          }
         
          iArray[RowSet][LineSet] = ++okNum;
    }
   
    // print the "iArray"
    for ( i = 0; i <= rows; i++ )
    {
        for ( j = 0; j <= rows; j++ )
            printf("%5d", iArray[i][j]);
        printf("\n");
    }
        
    system("pause");
    return 0;
}
以上程序的数据结构怎样表达??????麻烦各位高手点明小弟....清楚详细点,因为我是刚学,新手哦
2008-6-23 00:57
共有 327 人关注过本帖
发新话题
关于我们 | 广告合作 | 编程中国 | 清除Cookies | Archiver | WAP | TOP

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