/*
6. 矩阵中填数. 当给出 N*N 的矩阵,要求用程序填入下列形式的数:
① 倒填,例如N=5 ② 蛇形填数 ③ 回转填数
┌─┬─┬─┬─┬─┐ ┌─┬─┬─┬─┬─┐ ┌─┬─┬─┬─┬─┐
│25│24│23│22│21│ │ 1│ 3│ 4│10│11│ │ 1│16│15│14│13│
├─┼─┼─┼─┼─┤ ├─┼─┼─┼─┼─┤ ├─┼─┼─┼─┼─┤
│20│19│18│17│16│ │ 2│ 5│ 9│12│19│ │ 2│17│24│23│12│
├─┼─┼─┼─┼─┤ ├─┼─┼─┼─┼─┤ ├─┼─┼─┼─┼─┤
│15│14│13│12│11│ │ 6│ 8│13│18│20│ │ 3│18│25│22│11│
├─┼─┼─┼─┼─┤ ├─┼─┼─┼─┼─┤ ├─┼─┼─┼─┼─┤
│10│ 9│ 8│ 7│ 6│ │ 7│14│17│21│24│ │ 4│19│20│21│10│
├─┼─┼─┼─┼─┤ ├─┼─┼─┼─┼─┤ ├─┼─┼─┼─┼─┤
│ 5│ 4│ 3│ 2│ 1│ │15│16│22│23│25│ │ 5│ 6│ 7│ 8│ 9│
└─┴─┴─┴─┴─┘ └─┴─┴─┴─┴─┘ └─┴─┴─┴─┴─┘
*/
#include "iostream"
using namespace std;
#define MAX_SIZE 81 + 1
void reMetrix(const int n)
{
int count = n*n;
for(int i=0; i<n; i++)
{
for(int j=0; j<n; j++)
{
printf("%3d", count--);
}
cout << endl;
}
cout << endl;
}
void skMetrix(const int n)
{
int i, j;
int skMx[MAX_SIZE][MAX_SIZE];
skMx[0][0] = 1;
int r=0, c=0;
int count = 2;
for(i=0; i<n*2-2; i++)
{
int isRev = i<n-1 ? 0 : 1; // 是否过中界
isRev^(i%2==0) ? r++ : c++;
skMx[r][c] = count++;
for(j=0; j<(isRev ? n*2-i-3 : i+1); j++)
{
if(i%2 == 0)
{
c++;
r--;
}
else
{
r++;
c--;
}
skMx[r][c] = count++;
}
}
for(i=0; i<n; i++)
{
for(j=0; j<n; j++)
{
printf("%3d", skMx[i][j]);
}
cout << endl;
}
cout << endl;
}
void spMetrix(const int n)
{
int i, j, k;
int count = 1;
int spMx[MAX_SIZE][MAX_SIZE];
int r=0, c=0;
for(i=0; i<n/2+1; i++)
{
if(n-1-2*i == 0)
{
spMx[r][c] = count;
break;
}
for(k=0; k<4; k++)
{
for(j=0; j<n-1-2*i; j++)
{
spMx[r][c] = count++;
switch(k)
{
case 0: r++; break;
case 1: c++; break;
case 2: r--; break;
case 3: c--; break;
}
}
if(k == 3)
{
c++;
r++;
}
}
}
for(i=0; i<n; i++)
{
for(j=0; j<n; j++)
{
printf("%3d", spMx[i][j]);
}
cout << endl;
}
}
int main()
{
int n;
cin >> n;
cout << "① 倒填" << endl;
reMetrix(n);
cout << "② 蛇形填数" << endl;
skMetrix(n);
cout << "③ 回转填数" << endl;
spMetrix(n);
return 0;
}
分享到:
相关推荐
算法-素数方阵(信息学奥赛一本通-T1446).rar
matlab开发-引线方阵。确定线性模型参数的最小均方算法的一个例子。
算法-单词方阵(洛谷-P1101)(包含源程序).rar
ALEPH阿勒夫Steel Phalanx钢铁方阵钢铁方阵单位档案ISC:追随战士ISC: Myrmidons老兵部队移动力MOV近战CC射击BS体格PH意志W
html开发
适合初学者的解法,还可以练习递归的调用
密码学用到的三阶幻方阵的随机生成代码
外在二维手性:金属-电介质-金属方阵的巨大圆形转换二色性
电子政务-方阵式电晕高效烟尘净化装置.zip
参考资料-运动会方阵解说词.zip
汇编语言 数字方阵 程序 汇编语言 数字方阵 程序 汇编语言 数字方阵 程序
显示一个数字的方阵,提示输入一个3-9的数字,根据输入的数字显示方阵,如输入4,输出 1 2 3 4 12 13 14 5 11 16 15 6 10 9 8 7 源代码++报告
线性代数底层运算——方阵乘法
完成螺旋方阵的建立,输出。 完成螺旋方阵的建立,输出。
问题描述: 输入一个正整数n,生成一个nxn的蛇形方阵(具体见样例)。 输入格式: 一行一个正整数n,1。 输出格式: 共n行,每行n个正整数,每个正整数占5列。
螺旋方阵 将螺旋方阵存放到N×N的二维数组中并把它打印输出。要求程序自动生成下图所示螺旋方阵。用 #defined定义常量N,要求对N进行更改也能达到相同的效果。 1 16 15 14 13 2 17 24 23 12 ...5 6 7 8 9
C语言程序设计-求n阶方阵主、副对角线上的元素之积;.c
《信息奥赛课课通(C++)》p180-2 螺旋方阵2。逆时针螺旋
《Java基础》实验题和课程设计补充题 《Java基础》课程实验题 专业:计算机科学与技术、软件工程、网络工程(XX年级起)教材:《Java程序设计实用教 程(第4版)》 第6章图形用户界面 实验目的、要求和题意详见教材实验6。...
云计算开源产业联盟&云网产业推进方阵-云网产业发展白皮书——第一部分:云网络-2021.3-39页