110,571
社区成员
发帖
与我相关
我的任务
分享
/*
01--02--03--04--05--06--07--08
|
28--29--30--31--32--33--34 09
| | |
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
//////////////////////////////
01--02 06--07 15--16 28--29
/ / / / / / /
03 05 08 14 17 27 30 43
| / / / / / / / |
04 09 13 18 26 31 42 44
/ / / / / / /
10 12 19 25 32 41 45 54
| / / / / / / / |
11 20 24 33 40 46 53 55
/ / / / / / /
21 23 34 39 47 52 56 61
| / / / / / / / |
22 35 38 48 51 57 60 62
/ / / / / / /
36--37 49--50 58--59 63--64
//////////////////////////////
01--02 04 07 11 16 22 29
/> / / / / / /
03 05 08 12 17 23 30 37
/> / / / / / /
06 09 13 18 24 31 38 44
/> / / / / / /
10 14 19 25 32 39 45 50
/> / / / / / /
15 20 26 33 40 46 51 55
/> / / / / / /
21 27 34 41 47 52 56 59
/> / / / / / /
28 35 42 48 53 57 60 62
/> /> /> /> /> /> /
36 43 49 54 58 61 63--64
//////////////////////////////
01 09 23 35 45 53 59 63
\ \ \ \ \ \ \>
16 02 10 24 36 46 54 60
\ \ \ \ \ \ \>
29 17 03 11 25 37 47 55
\ \ \ \ \ \ \>
40 30 18 04 12 26 38 48
\ \ \ \ \ \ \>
49 41 31 19 05 13 27 39
\ \ \ \ \ \ \>
56 50 42 32 20 06 14 28
\ \ \ \ \ \ \>
61 57 51 43 33 21 07 15
\> \> \> \> \> \> \>
64 62 58 52 44 34 22 08
//////////////////////////////
64--63--62--61--60--59--58--57
|
37--38--39--40--41--42--43 56
| | |
36--35--34--33--32--31 44 55
| | |
17--18--19--20--21 30 45 54
| | | | |
16--15--14--13 22 29 46 53
| | | | |
05--06--07 12 23 28 47 52
| | | | | | |
04--03 08 11 24 27 48 51
| | | | | | |
01--02 09--10 25--26 49--50
//////////////////////////////
01--02--03--04--05--06--07--08
|
16--15--14--13--12--11--10--09
|
17--18--19--20--21--22--23--24
|
32--31--30--29--28--27--26--25
|
33--34--35--36--37--38--39--40
|
48--47--46--45--44--43--42--41
|
49--50--51--52--53--54--55--56
|
64--63--62--61--60--59--58--57
*/
01 02 03 04 05 06 07 08
28 29 30 31 32 33 34 09
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
-------
01 02 06 07 15 16 28 29
03 05 08 14 17 27 30 43
04 09 13 18 26 31 42 44
10 12 19 25 32 41 45 54
11 20 24 33 40 46 53 55
21 23 34 39 47 52 56 61
22 35 38 48 51 57 60 62
36 37 49 50 58 59 63 64
-------
01 02 04 07 11 16 22 29
03 05 08 12 17 23 30 37
06 09 13 18 24 31 38 44
10 14 19 25 32 39 45 50
15 20 26 33 40 46 51 55
21 27 34 41 47 52 56 59
28 35 42 48 53 57 60 62
36 43 49 54 58 61 63 64
-------
01 09 23 35 45 53 59 63
16 02 10 24 36 46 54 60
29 17 03 11 25 37 47 55
40 30 18 04 12 26 38 48
49 41 31 19 05 13 27 39
56 50 42 32 20 06 14 28
61 57 51 43 33 21 07 15
64 62 58 52 44 34 22 08
-------
64 63 62 61 60 59 58 57
37 38 39 40 41 42 43 56
36 35 34 33 32 31 44 55
17 18 19 20 21 30 45 54
16 15 14 13 22 29 46 53
05 06 07 12 23 28 47 52
04 03 08 11 24 27 48 51
01 02 09 10 25 26 49 50
-------
01 02 03 04 05 06 07 08
16 15 14 13 12 11 10 09
17 18 19 20 21 22 23 24
32 31 30 29 28 27 26 25
33 34 35 36 37 38 39 40
48 47 46 45 44 43 42 41
49 50 51 52 53 54 55 56
64 63 62 61 60 59 58 57
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define MAX 100000
void screw(int*a, int n);
void printArray(int*a, int n);
int main(int argc, char* argv[], char* env[])
{
int a[MAX] = {0,};
int i;
int n;
for(i=1; i<10; i++) {
n = i*i -1;
screw(a, n);
printArray(a, n);
}
return 0;
}
void screw(int* a, int n) {
int m;
int p;
int q;
int i;
int j;
int k;
int base;
m = (int)sqrt(n+1);
q = 0;
k = 0;
for(p=m; p>0; p-=2) {
base = m*q + q;
//上边
j=0;
for(i=0; i<p; i++) {
a[base+j*m+i] = k++;
}
//右边
i=p-1;
for(j=1; j<p; j++) {
a[base+j*m+i] = k++;
}
//下边
j=p-1;
for(i=p-2; i>=0; i--){
a[base+j*m+i] = k++;
}
//左边
i=0;
for(j=p-2; j>0; j--) {
a[base+j*m+i] = k++;
}
q++;
}
}
void printArray(int * a, int n) {
int i;
int m;
m = (int)sqrt(n+1);
for(i=0; i<=n; i++) {
if(i%m == 0) printf("\n");
printf("%2d ", a[i]);
}
printf("\n");
}