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"
#define SIZE 10

int main()
{
	int i,j=0;
	int a[SIZE][SIZE] = {0};
	int x=0,y=0,ax=0,ay=0,k=0;
	int dx[4] = {0,1,0,-1};
	int dy[4] = {1,0,-1,0};
	int num = 0;

	scanf_s("%d",&num);
	for (i = 0; i < num * num; i++)
	{
		a[x][y] = i+1;
		ax= x+dx[k];
		ay = y+dy[k];
		if (ax < 0 || ax == num || ay < 0 || ay == num || a[ax][ay] != 0)
		{
			k= (k+1)%4;
			ax= x+dx[k];
			ay = y+dy[k];

		}

		x=ax;
		y=ay;
	}

	for (i = 0; i < num ; i++)
	{
		for (j = 0; j < num; j++)
		{
			printf("%5d",a[i][j]);
		}
		printf("\n");
	}

	return 0;
}

PAT - IO - 螺旋方阵,布布扣,bubuko.com

时间: 2024-11-08 13:39:32

PAT - IO - 螺旋方阵的相关文章

数组-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又改变符合,这样可保证赋值到

PAT 1050. 螺旋矩阵

PAT 1050. 螺旋矩阵 本题要求将给定的N个正整数按非递增的顺序,填入"螺旋矩阵".所谓"螺旋矩阵",是指从左上角第1个格子开始,按顺时针螺旋方向填充.要求矩阵的规模为m行n列,满足条件:m*n等于N:m>=n:且m-n取所有可能值中的最小值. 输入格式: 输入在第1行中给出一个正整数N,第2行给出N个待填充的正整数.所有数字不超过104,相邻数字以空格分隔. 输出格式: 输出螺旋矩阵.每行n个数字,共m行.相邻数字以1个空格分隔,行末不得有多余空格.

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

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,

那些年,一起学的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("请输入螺旋矩阵的维

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 =