問題描述:輸入乙個整數,作為二維陣列的行列,將二維陣列中的值賦值成s蛇形。
input:m=5
output:
1 2 3 4 5
16 17 18 19 6
15 24 25 20 7
14 23 22 21 8
13 12 11 10 9
有人用演算法直線過,但是我覺得推出那個公式還真複雜啊,我的方法比較笨但是比較直觀
其核心思想是:如果輸入5,那麼先計算有幾圈要填充,這裡計算的是第0到(n-1)/2圈,也就是說,當n=5時,要填充第0到2圈
每一圈的沒一條變都是填充邊長減1,那麼四條變就可以形成乙個完整的矩形了,沒有重疊的地方哦~一次填充完每一圈就可以了。。。
程式實現如下:
#include
using namespace std;
void ssnakearr(int** a,int n)
for (j0=i;j0
for (i0=i;i0
for (;j0>i;j0--)//下邊從有往左,填充n-2*i-1個數字
for (;i0>i;i0--)//左邊從上往下,填充n-2*i-1個數字}}
void testofssnakearr()//測試用例
for (int i0=0;i0
}ssnakearr(a,m);
for (int i1=0 ;i1
printf("\n");}}
void main()
{testofssnakearr();
system("pause");
執行結果:
m=81 2 3 4 5 6 7 8
28 29 30 31 32 33 34 9
27 48 49 50 51 52 35 10
26 47 60 61 62 53 36 11
25 46 59 64 63 54 37 12
24 45 58 57 56 55 38 13
23 44 43 42 41 40 39 14
22 21 20 19 18 17 16 15
有人用演算法直線過,但是我覺得推出那個公式還真複雜啊,我的方法比較笨但是比較直觀
snakeShape 蛇形陣列
在師兄的督促下實現的蛇性陣列,用了最簡單的辦法,最開始還懷疑能不能實現,結果還真的可以.snakeshape.cpp input n include using namespace std int main int flag 1 int first index 0,second index n 1,...
C 蛇形陣列
例如 void print arr int arr2 n n 列印陣列 printf n sleep 200 sleep函式,使程式暫停200毫秒 system cls cls,清除螢幕中列印出來的內容 void order print int arr n n int circle 按順序列印 再定...
C語言 實現蛇形陣列
首先我們先看一下蛇形陣列是什麼 那麼我們要實現這個陣列,怎麼實現呢?我們可以看到,它每一圈的數字都是依次加1的,那麼就很容易想到用圈來實現,先算除要求的陣列有多少圈,然後每一圈可以分為4個迴圈,兩行兩列。具體實現 如下 include include define n 5 void print ar...