今天在Tyvj的初学者题库里面做到了Q1023 蛇形矩阵这一道题,找不到什么规律,就自己模拟蛇形移动,设计了下面这样一个算法,先贴代码,再做算法分析
//蛇形填数
#include <iostream>
using namespace std;
int p[102][102];
void display(int p[][102],int n)
{
for(int i=1; i<=n; ++i)
{
for(int j=1; j<n; ++j)
cout << p[i][j] << ' ';
cout << p[i][n] << endl;
}
}
int main()
{
int n, t;
cin >> n;
int row=1, col=0, now=0, dir=4;
while(p[row][col]!=n*n)
{
if(dir==1)
{
for(++row; row<=n; ++row)
{
p[row][col] = ++now;
if(p[row+1][col]!=0) break;
}
if(row>n) --row;
}
else if(dir==2)
{
for(--col; col>=1; --col)
{
p[row][col] = ++now;
if(p[row][col-1]!=0) break;
}
if(col<1) ++col;
}
else if(dir==3)
{
for(--row; row&g