螺旋队列的另一种解法

来源:互联网 发布:淘宝没发货退款要多久 编辑:程序博客网 时间:2024/06/04 19:18
#include<iostream>
#include<iomanip>//setw函数头文件
using namespace std;


const int N=9;


int main()
{
int m=N*N,time=m;//从m开始计数,总共循环time次
int a[N][N]={0};
int jiquan=0;//记录在第几圈
int i=0,j=N-1;//从右上角开始螺旋
while(time>0)
{
while(j>jiquan)
{a[i][j--]=m;m--;time--;}
while(i<N-1-jiquan)
{a[i++][j]=m;m--;time--;}
while(j<N-1-jiquan)
{a[i][j++]=m;m--;time--;}
jiquan++;//因为这里开始准备向第二圈螺旋了
while(i>jiquan)
{a[i--][j]=m;m--;time--;}
if(i==N/2&&j==N/2)
{
a[i--][j]=m;m--;time--;//保证最后一个数能够写到
}
}
for(int i=0;i<N;i++)
{
for(int j=0;j<N;j++)
cout<<setw(6)<<a[i][j];
cout<<endl<<endl;
}


return 0;
}
0 0
原创粉丝点击