1490 数据结构:螺旋方阵

 1 #include <iostream>
 2 #define MAX_SIZE 100+1
 3 using namespace std; 5 int array[MAX_SIZE][MAX_SIZE];
 6 int creatScrewMatrix(int n)
 7 {
 8     int upBound=0,downBound=n-1,leftBound=0,rightBound=n-1;//上下左右边界初始化
 9     int num=1;
10     while(upBound<=downBound && leftBound<=rightBound)
11     {
12         for (int i = leftBound; i <=rightBound; ++i)
13             array[upBound][i]=num++;
14         for (int i = ++upBound; i <=downBound; ++i)
15             array[i][rightBound]=num++;
16         for (int i = --rightBound; i >= leftBound; --i)
17             array[downBound][i]=num++;
18         for (int i = --downBound; i >=upBound; --i)
19             array[i][leftBound]=num++;
20         leftBound++;
21     }
22 }
23 void printScrewMatrix(int n)
24 {
25     for (int i = 0; i < n; ++i)
26     {
27         for (int j = 0; j < n; ++j)
28             j==0?printf("%d",array[i][j]) : printf(" %d",array[i][j]);
29         printf("\n");
30     }
31     printf("\n");
32 }
33 int main(int argc, char const *argv[])
34 {
35     #ifndef _OJ_  //ONLINE_JUDGE
36     freopen("input.txt", "r", stdin);
37     #endif
38     int n;
39     scanf("%d",&n);
40     creatScrewMatrix(n);
41     printScrewMatrix(n);
42     return 0;
43 }
时间: 2024-10-27 10:55:04

1490 数据结构:螺旋方阵的相关文章

PAT - IO - 螺旋方阵

所谓“螺旋方阵”,是指对任意给定的N,将1到N*N的数字从左上角第1个格子开始,按顺时针螺旋方向顺序填入NxN的方阵里.本题要求构造这样的螺旋方阵. 输入格式: 输入在一行中给出一个正整数N(<10). 输出格式: 输出NxN的螺旋方阵.每行N个数字,每个数字占3位. 输入样例: 5 输出样例: 1 2 3 4 5 16 17 18 19 6 15 24 25 20 7 14 23 22 21 8 13 12 11 10 9 实现: #include "stdafx.h" #de

数组-13. 螺旋方阵

1 /* 2 * Main.c 3 * E13-数组-13. 螺旋方阵 4 * Created on: 2014年8月25日 5 *******测试通过*********** 6 * 7 */ 8 9 #include <stdio.h> 10 11 int main(void) { 12 13 int array[11][11]; 14 int n; //题目中的N 15 16 scanf("%d", &n); 17 18 int upBound = 0; //上

数组-13. 螺旋方阵(20)

所谓“螺旋方阵”,是指对任意给定的N,将1到N*N的数字从左上角第1个格子开始,按顺时针螺旋方向顺序填入NxN的方阵里.本题要求构造这样的螺旋方阵. 输入格式: 输入在一行中给出一个正整数N(<10). 输出格式: 输出NxN的螺旋方阵.每行N个数字,每个数字占3位. 输入样例: 5 输出样例: 1 2 3 4 5 16 17 18 19 6 15 24 25 20 7 14 23 22 21 8 13 12 11 10 9 1 #include <iostream> 2 #includ

c和c++的一些训练题(10)(打印螺旋方阵)

问题的提出:编写螺旋方阵.其中螺旋方阵形式如下: 1  12 11  10 2  13 16   9 3  14 15   8 4   5   6    7 设row,column分别代表行.列坐标,变量p从1到n2将p依次存入数组a[row][column]中,要确定row.colomn的变化情况.分析如下:引进变量k,初值为n.当数据存入到左下角或右上角时,k减1,这样可保证输出时方阵.引进变量t,初值为1,当数据存入到右下角时,令t改变符合,当存入到左上角时,t又改变符合,这样可保证赋值到

1807: 【基础】螺旋方阵

program ex1807;var n,i,j,t,f,l,q,z:integer;s1,s2:longint; a:array[1..20,1..20] of integer;begin readln(n); t:=1; f:=1; l:=n;i:=1;q:=1;z:=n; while t<=n*n do begin case f of 1:begin for j:=q to z do begin a[i,j]:=t;inc(t);end; f:=2; q:=i+1;dec(l); z:=l

蛇形矩阵 和螺旋矩阵

1.蛇形方阵: 1  2  3 6  5  4 7  8  9 外层控制层数,内层根据列数控制方向:0 则往右走   N-1则往左走 #include <stdio.h> #include <stdlib.h> #include <string.h> #define SIZE 100 int a[SIZE][SIZE]; int main(int argc, const char *argv[]) { int dim = atoi(argv[1]); int i, j,

C语言成长学习题(十四)

六十一.定义4*6的实型数组,并将各行前5列元素的平均值分别放在同一行的第6列上. 1 #include <stdio.h> 2 3 void main(void) 4 { 5 float a[4][6], sum; 6 int i, j; 7 8 for (i = 0; i < 4; i++) 9 for (j = 0; j < 5; j++) 10 a[i][j] = i * j + 1; 11 for (i = 0; i < 4; i++) 12 { 13 sum =

C语言入门100题,考算法的居多

入门题,考算法的居多,共同学习! 1. 编程,统计在所输入的50个实数中有多少个正数.多少个负数.多少个零. 2. 编程,计算并输出方程X2+Y2=1989的所有整数解. 3. 编程,输入一个10进制正整数,然后输出它所对应的八进制.十六进制数. 4. 一个数如恰好等于它的因子之和,这个数就称为“完数”.编程序找出1000以内的所有完数,并输出其因子(6是一个"完数",它的因子是1,2,3). 5. 输入一个正整数,输出它的所有质数因子(如180的质数因子为 2.2.3.3.5). 6

那些年,一起学的Java 6-3

/** * 6-3 * 编程实现如下要求的螺旋矩阵 * 螺旋方阵存放在n*n的二维数组中并将其打印输出 * 要求 n 由程序读入 * 数字螺旋方阵由程序自动生成 * (非人为的初始化或逐个输入) */ import java.io.*; import java.util.*; public class Test{ public static void main(String[] args){ /*声明一个维数是n的数组*/ int n=0; System.out.print("请输入螺旋矩阵的维