概述
三角形螺旋数阵
题目描述
现要生成一个直角边边长为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;
}
最后
以上就是想人陪画板为你收集整理的三角形螺旋数阵的全部内容,希望文章能够帮你解决三角形螺旋数阵所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复