视频刷题记录
程序员文章站
2024-03-12 15:20:14
...
打印螺旋矩阵
螺旋数组的核心思路就是找出规律,通过控制i,j的变换来一圈一圈的给数组赋值。
一圈一圈的顺时针输入,分别为:从左到右,从上到下,从右向左,从下到上。当n为奇数时,圈数是n/2+1(因为中间会剩一个数字),当n为偶数时,圈数是n/2
法一:常规做法
#include<iostream>
using namespace std;
int main()
{
int a[100][100];
int t=1;//用来给数组赋值
int n,i,j;
cin>>n;//n*n数组
int step;//圈数
if(n%2==0)
step=n/2;
else
step=n/2+1;
//int a=0,b=n-1;//刚开始的圈数的位置
for(j=0;j<step;j++){
//从左到右
for(i=0+j;i<=n-1-j;i++){
a[0+j][i]=t;
t++;
}
//从上到下
for(i=1+j;i<=n-1-j;i++){
a[i][n-1-j]=t;
t++;
}
//从右到左
for(i=n-2-j;i>=0+j;i--){
a[n-1-j][i]=t;
t++;
}
//从下到上
for(i=n-2-j;i>=1+j;i--){
a[i][0+j]=t;
t++;
}
}//输入数据完毕
/*---------------------开始打印数据----------------------*/
for(i=0;i<n;i++){
for(j=0;j<n;j++)
cout<<a[i][j]<<" ";
cout<<endl;
}
while(cin>>i>>j)
cout<<a[i][j]<<endl;
return 0;
}
运行结果
上一篇: 华为2016研发工程师编程题2/3