蛇形矩陣
1
#include<iostream>
2
#include<stdlib.h>
3
using namespace std;
4
void snake(int step); //定義蛇形矩陣產(chǎn)生函數(shù)
5
6
int main()
7

{
8
int N;
9
cout<<"please input step:"<<endl;
10
cin>>N;
11
snake(N);
12
system("pause");
13
return 0;
14
}
15
void snake(int step)
16

{
17
int i,j;
18
int n=step;
19
int p[10][10];
20
p[0][0]=1; //矩陣左上角和右下角兩個頂點是確定的值
21
p[n-1][n-1]=n*n;
22
for(i=0;i<=n-1;i++)
23
for(j=0;j<=i;j++)
24
{
25
if(i>0&&(i%2)!=0)
26
{
27
p[i][0]=p[i-1][0]+1;
28
p[i-j][j]=p[i][0]+j;
29
}
30
else if(i>0&&(i%2)==0)
31
{
32
p[0][i]=p[0][i-1]+1;
33
p[j][i-j]=p[0][i]+j;
34
}
35
} // 到這里實現(xiàn)蛇形矩陣的左上部分,下面根據(jù)右下角p[n-1][n-1]實現(xiàn)右下部分
36
for(i=n-1;i>=0;i--)
37
for(j=n-1;j>=0;j--)
38
{
39
int sum=i+j;
40
if(sum>(n-1)&&j<n-1)
41
{
42
if(sum%2!=0)
43
{
44
p[sum-n+1][n-1]=p[sum-n+2][n-1]-1;
45
p[sum-j][j]=p[sum-n+1][n-1]-(n-1-j);
46
}
47
else
48
{
49
p[n-1][sum-n+1]=p[n-1][sum-n+2]-1;
50
p[j][sum-j]=p[n-1][sum-n+1]-(n-1-j);
51
}
52
}
53
}
54
for(i=0;i<=n-1;i++)
55

{
56
for(j=0;j<=n-1;j++)
57
{
58
cout<<p[i][j]<<' ';
59
}
60
cout<<endl;
61
}

2

3

4

5

6

7



8

9

10

11

12

13

14

15

16



17

18

19

20

21

22

23

24



25

26



27

28

29

30

31



32

33

34

35

36

37

38



39

40

41



42

43



44

45

46

47

48



49

50

51

52

53

54

55



56

57



58

59

60

61
