我是靠谱客的博主 想人陪画板,最近开发中收集的这篇文章主要介绍三角形螺旋数阵,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

三角形螺旋数阵
题目描述

现要生成一个直角边边长为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;
}


最后

以上就是想人陪画板为你收集整理的三角形螺旋数阵的全部内容,希望文章能够帮你解决三角形螺旋数阵所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(158)

评论列表共有 0 条评论

立即
投稿
返回
顶部