首页 > 编程知识 正文

数字螺旋方阵,著名的三角形数阵

时间:2023-05-05 21:02:24 阅读:260892 作者:138

三角形螺旋数阵
题目描述

现要生成一个直角边边长为n的三角形螺旋数阵,规则如下:从三角形的左上角(第1行第1列)出发,初始向右移动,无法前进则转向。走完两条直角边后,向左上经过斜边,遇到已经走过的格子则再次转向。在经过的格子中依次填入1, 2, 3, …,如下图所示。

矩阵示意图

输入描述:

一行,一个不大于10的正整数n。

输出描述:

n行n列的三角形螺旋数阵,每一数字占3位,如果数字不足3位,则在前面补充空格。

输入样例:

4
输出样例:

1 2 3 4
9 10 5
8 6
7
(尽量用等宽字体显示)
螺旋矩阵,让它绕圈走就完了
代码如下:

#include <cstdio>#include <iomanip>#include <iostream>using namespace std;int main(){ int n,cnt=0,x=1,y=1,a[15][15]={},b[3][2]={{0,1},{1,0},{-1,-1}},d=0; cin>>n; while (cnt<(n+1)*n/2){ cnt++; a[x][y]=cnt; if(x+b[d][0]>n||x+b[d][0]<1||y+b[d][1]>n||y+b[d][1]<1||a[x+b[d][0]][y+b[d][1]]>0)d=(d+1)%3; x+=b[d][0]; y+=b[d][1]; } for (int i = 1; i <= n; i++){ for (int j = 1; j <= n; j++){ if(a[i][j])cout<<setw(3)<<a[i][j]; else cout<<" "; } cout<<endl; } return 0;}

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。