首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

各位老师怎么用数组将方阵存成这个样子,并输出?

2012-04-22 
各位老师如何用数组将方阵存成这个样子,并输出??用二维数组存储成这个样子,自然数从小到大旋转着存入。1234

各位老师如何用数组将方阵存成这个样子,并输出??
用二维数组存储成这个样子,自然数从小到大旋转着存入。


1 2 3 4 5 6
15 16 17 18 7 
14 21 19 8
13 20 9
12 10
11

[解决办法]
其它的地方加0啊!就可以了,先算出怎么排列就OK了!
[解决办法]
楼主可参考下面链接的文章,希望对你有所帮助
螺旋矩阵
[解决办法]

C/C++ code
#include "stdio.h"int main(){    int result[21][21];    int n=0,ntag;    int flag=1;    int x=1,y=0;    int number=0;    scanf("%d",&n);    ntag = n;    for (;ntag>0; ntag--)    {        switch (flag)        {        case 1:            {                for (int i=0; i<ntag; i++)                {                result[x][++y] = ++number;                }                flag=2;            }            break;                    case 2:            {                for (int i=0; i<ntag; i++)                {                result[++x][--y] = ++number;                }                flag=3;            }            break;                    case 3:            {                for (int i=0; i<ntag; i++)                {                result[--x][y] = ++number;                }                flag=1;            }            break;        }    }    for (int i=1; i<=n; ++i)    {        for (int j=1; j<=n-i+1; ++j)        {            printf("%4d",result[i][j]);        }        printf("\n");    }    return 0;}
[解决办法]
直接求出第i行j列上的数是多少。

C/C++ code
#include <iostream>using namespace std;int min(int x,int y,int z){    int a=99999;    if (a>x)        a=x;    if (a>y)        a=y;    if (a>z)        a=z;    return a;}int main(){    int n;    cin >> n;    int i,j,k,s;    for (i=1;i<=n;i++)    {        for (j=1;j<=n+1-i;j++)        {            k=min(i,j,n+2-i-j);            s=3*(k-1)*(n-1)-9*(k-1)*(k-2)/2;            if (i==k)                cout << s+j+1-k << " ";            if (n+2-i-j==k && i!=k && j!=k)                cout << s+n-3*(k-1)+i-k << " ";            if (j==k && i!=k)                cout << 3*k*(n-1)-9*k*(k-1)/2-i+k+1 << " ";        }        cout << endl;    }    return 0;}
[解决办法]
螺旋矩阵实现的原理如下:
从原理上看,是3种输入方式的循环:1).从左往右为数组赋值,X坐标自增,y坐标不变(数组第一维和第二维分别称作x、y ;2).根据1中的x和y值,从上往下y坐标自减,x坐标自增的为数组赋值; 3).根据2中的x和y值,从下往上x坐标自减,y坐标不变的为数组赋值。

热点排行