算法篇-蛇形矩阵

题目:在n*n方阵里填入1,2,3,···,n*n,要求填成蛇形,例如n=4时方阵为:
                                                       10 11 12 1
                                                       9   16 13 2
                                                       8   15 14 3
                                                       7   6   5   4

上面的方阵中,多余的空格知识为了便于观察规律,不必严格输出,n<=8。

代码如下:

#include 
#include 
#define MAXN 10
using namespace std;
int a[MAXN][MAXN];
int main()
{
    int n,x,y,t=0;
    cin>>n;
    memset(a,0,sizeof(a));
    x=0;
    y=n-1;
    t=a[x][y]=1;
    while (t=0 && !a[x][y-1])
            a[x][--y]=++t;
        while (x-1>=0 && !a[x-1][y])
            a[--x][y]=++t;
        while (y+1


运行结果:

算法篇-蛇形矩阵_第1张图片

 

知识点总结:

这个相当于应用了搜索,不过比搜索要简单,从a[0][n-1]出发,先向下搜索,如果碰到了已经经过过的位置或者即将越界就换向,由于是从外向内走蛇形盘旋路线,所以转的方向只有一个。直到最后一个位置,即t==n*n时结束。

你可能感兴趣的:(c++,namespace,博客,编程)