S字蛇形陣列賦值

2021-06-18 14:54:09 字數 1111 閱讀 5647

問題描述:輸入乙個整數,作為二維陣列的行列,將二維陣列中的值賦值成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...