演算法篇-蛇形矩陣
題目:在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 <iostream>
#include <cstring>
#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<n*n)
{
while (x+1<n && !a[x+1][y])
a[++x][y]=++t;
while (y-1>=0 && !a[x][y-1])
a[x][--y]=++t;
while (x-1>=0 && !a[x-1][y])
a[--x][y]=++t;
while (y+1<n && !a[x][y+1])
a[x][++y]=++t;
}
for (x=0;x<n;x++)
{
int i=0;
for(y=0;y<n;y++)
{
i++;
if (i!=4)
cout<<a[x][y]<<"\t";
else
cout<<a[x][y]<<endl;
}
}
return 0;
}
執行結果:
知識點總結:
這個相當於應用了搜尋,不過比搜尋要簡單,從a[0][n-1]出發,先向下搜尋,如果碰到了已經經過過的位置或者即將越界就換向,由於是從外向內走蛇形盤旋路線,所以轉的方向只有一個。直到最後一個位置,即t==n*n時結束。
相關文章
- 【面試】輸出"蛇形"矩陣面試矩陣
- 【原創】生成n*n蛇形矩陣的演算法矩陣演算法
- C++實現蛇形矩陣C++矩陣
- 每天OnLineJudge 之 “蛇形矩陣 ”矩陣
- 用C語言輸出蛇形矩陣C語言矩陣
- 24:蛇形填充陣列陣列
- 演算法學習:矩陣快速冪/矩陣加速演算法矩陣
- 演算法-陣列與矩陣演算法陣列矩陣
- 7-蛇形二維陣列陣列
- 演算法之DP——01矩陣演算法矩陣
- 生成螺旋矩陣(方陣、矩陣)矩陣
- 演算法學習之路|螺旋矩陣演算法矩陣
- 矩陣連乘演算法精講矩陣演算法
- 鄰接矩陣、度矩陣矩陣
- 巨大的矩陣(矩陣加速)矩陣
- 奇異矩陣,非奇異矩陣,偽逆矩陣矩陣
- 演算法題:矩陣鏈乘問題演算法矩陣
- 計算機演算法:Strassen矩陣乘法計算機演算法矩陣
- 矩陣矩陣
- 資料結構:陣列,稀疏矩陣,矩陣的壓縮。應用:矩陣的轉置,矩陣相乘資料結構陣列矩陣
- 3D圖形:矩陣的行列式,矩陣的逆、正交矩陣、齊次矩陣3D矩陣
- 矩陣中最大的二維矩陣矩陣
- 求任意矩陣的伴隨矩陣矩陣
- 圖論——環測定與矩陣演算法圖論矩陣演算法
- 矩陣連乘(動態規劃演算法)矩陣動態規劃演算法
- 演算法題系列:矩陣鏈乘問題演算法矩陣
- 機器學習中的矩陣向量求導(五) 矩陣對矩陣的求導機器學習矩陣求導
- 矩陣和陣列矩陣陣列
- 理解矩陣矩陣
- 矩陣相乘矩陣
- 矩陣分解矩陣
- 稀疏矩陣矩陣
- Numpy 矩陣矩陣
- 穿越矩陣矩陣
- 混淆矩陣矩陣
- 魔方矩陣矩陣
- 海浪矩陣矩陣
- 8.6 矩陣?矩陣