首页 > 其他 > 详细

蛇形填数

时间:2020-07-20 17:34:34      阅读:73      评论:0      收藏:0      [点我收藏+]

在 n 阶方阵填入1 ,2 ,3 ,.... , n*n ,要求填成蛇形。例如, n = 4 时方阵为:

10   11   12   1

 9   16    13   2

 8   15    14   3

 7    6      5    4

 

代码如下

#include<iostream>
using namespace std;

#define maxn 8
int num[maxn][maxn] = {0};                // 创建一个二维数组,并初始化

int main()
{
    int n;                //确定 n 阶方阵
    
    while (cin>>n)
    {
        int j = 1;
        int l = n;
        int k = n/2;        //方阵的环数 (不包括 迹 为奇数的方阵的中间那个数字)
    
        while (k)
        {
            for (int i = n-l; i < l-1; i++)            //赋值
                num[i][l-1] = j++;
            for (int i = l-1; i > n-l; i--)
                num[l-1][i] = j++;
            for (int i = l-1; i > n-l; i--)
                num[i][n-l] = j++;
            for (int i = n-l; i < l-1; i++)
                num[n-l][i] = j++;
            
            l = l-1;                    // 使方阵环内缩(即环向中心靠拢)
            k--;                       // 限制环数,防止重复
        }
        
        if (n % 2 == 1)                    //如果迹为奇数,确定方阵中心的数字
            num[n/2][n/2] = j;
        for (int i = 0; i < n; i++)        //输出
        {
            for (int j = 0; j < n; j++)
                printf("%3d",num[i][j]);
                cout<<endl;
        }    
    }
    return 0;
 }

蛇形填数

原文:https://www.cnblogs.com/go-alltheway/p/13345616.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!