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+q-1;
end;
2:begin
for i:=q to z do begin a[i,j]:=t;inc(t);end;
f:=3;q:=j-1; z:=q-l+1;
end;
3:begin
for j:=q downto z do begin a[i,j]:=t;inc(t); end;
f:=4;q:=i-1;dec(l);z:=q-l+1;
end;
4:begin
for i:=q downto z do begin a[i,j]:=t;inc(t); end;
f:=1;q:=j+1;z:=q+l-1;
end;
end;
end;
s1:=0;s2:=0;
for i:=1 to n do s1:=s1+a[i,i];
for i:=n downto 1 do s2:=s2+a[n-i+1,i];
writeln(s1-s2);
end.

时间: 2024-08-11 05:27:52

1807: 【基础】螺旋方阵的相关文章

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

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

蛇形矩阵 和螺旋矩阵

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("请输入螺旋矩阵的维