70,020
社区成员




// 蛇形填数 题目
//
#include "stdafx.h"
#include <string.h>
#define maxn 20
int a[maxn][maxn];
int main()
{
int n, x, y, top = 0;
scanf_s("%d", &n);
memset(a, 0, sizeof(a));
top = a[x = 0][y = n - 1] = 1;
while (top < n*n)
{
while (x + 1 < n && !a[x + 1][y])// 这个地方不很理解!!
a[++x][y] = ++top;
while (y - 1 >=0 && !a[x][y - 1])
a[x][--y] = ++top;
while (x - 1 >= 0 && !a[x - 1][y])
a[--x][y] = ++top;
while (y + 1 < n && !a[x][y+1])
a[x][++y] = ++top;
}
for (x = 0; x < n; x++)
{
for (y = 0; y < n; y++)
printf("%3d", a[x][y]);
printf("\n");
}
getchar();
getchar();
return 0;
}
#include <stdio.h>
#define MAXN 100
int m[MAXN+2][MAXN+2];
char d;
int x,y,k,n,w;
char str[10];
void main() {
while (1) {
printf("Input n(1..%d):",MAXN);
fflush(stdout);
rewind(stdin);
if (1==scanf("%d",&n)) {
if (1<=n && n<=MAXN) break;
}
}
y=0 ;for (x=0;x<=n+1;x++) m[y][x]=1;
y=n+1;for (x=0;x<=n+1;x++) m[y][x]=1;
x=0 ;for (y=0;y<=n+1;y++) m[y][x]=1;
x=n+1;for (y=0;y<=n+1;y++) m[y][x]=1;
for (y=1;y<=n;y++) {
for (x=1;x<=n;x++) {
m[y][x]=0;
}
}
x=1;
y=1;
k=0;
d='D';
while (1) {
k++;
if (k>n*n) break;
m[y][x]=k;
switch (d) {
case 'D':
if (0==m[y+1][x]) y++;
else {x++;d='R';}
break;
case 'R':
if (0==m[y][x+1]) x++;
else {y--;d='U';}
break;
case 'U':
if (0==m[y-1][x]) y--;
else {x--;d='L';}
break;
case 'L':
if (0==m[y][x-1]) x--;
else {y++;d='D';}
break;
}
}
w=sprintf(str,"%d",n*n);
for (y=1;y<=n;y++) {
for (x=1;x<=n;x++) {
printf(" %0*d",w,m[y][x]);
}
printf("\n");
}
}
//n=1,
//1
//n=2,
//12
//34
//n=3,
//126
//357
//489
//n=4,
// 1 2 6 7
// 3 5 8 13
// 4 9 12 14
// 10 11 15 16
//n=5,
// 1 2 6 7 15
// 3 5 8 14 16
// 4 9 13 17 22
// 10 12 18 21 23
// 11 19 20 24 25
//之字形
//模仿蚂蚁爬的过程
#include <stdio.h>
#define MAXN 9
int m[MAXN][MAXN];
int i,x,y,dx,dy,n,n2,k;
void main() {
for (i=1;i<=MAXN;i++) {
n2=i*i;
k=1;
if (n2>9) k=3;
x=0;
y=0;
dx=1;
dy=-1;
n=1;
m[y][x]=n;
while (1) {
if (n>=n2) break;
n++;
x=x+dx;
y=y+dy;
if (y>=i) {
x=x+2;
y=i-1;
dx=1;
dy=-1;
}
if (x>=i) {
y=y+2;
x=i-1;
dx=-1;
dy=1;
}
if (y<0) {
y=0;
dx=-1;
dy=1;
}
if (x<0) {
x=0;
dx=1;
dy=-1;
}
m[y][x]=n;
}
for (y=0;y<i;y++) {
for (x=0;x<i;x++) {
printf("%*d",k,m[y][x]);
}
printf("\n");
}
printf("-------------%d--------------\n",i);
}
}
//1
//-------------1--------------
//12
//34
//-------------2--------------
//126
//357
//489
//-------------3--------------
// 1 2 6 7
// 3 5 8 13
// 4 9 12 14
// 10 11 15 16
//-------------4--------------
// 1 2 6 7 15
// 3 5 8 14 16
// 4 9 13 17 22
// 10 12 18 21 23
// 11 19 20 24 25
//-------------5--------------
// 1 2 6 7 15 16
// 3 5 8 14 17 26
// 4 9 13 18 25 27
// 10 12 19 24 28 33
// 11 20 23 29 32 34
// 21 22 30 31 35 36
//-------------6--------------
// 1 2 6 7 15 16 28
// 3 5 8 14 17 27 29
// 4 9 13 18 26 30 39
// 10 12 19 25 31 38 40
// 11 20 24 32 37 41 46
// 21 23 33 36 42 45 47
// 22 34 35 43 44 48 49
//-------------7--------------
// 1 2 6 7 15 16 28 29
// 3 5 8 14 17 27 30 43
// 4 9 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
//-------------8--------------
// 1 2 6 7 15 16 28 29 45
// 3 5 8 14 17 27 30 44 46
// 4 9 13 18 26 31 43 47 60
// 10 12 19 25 32 42 48 59 61
// 11 20 24 33 41 49 58 62 71
// 21 23 34 40 50 57 63 70 72
// 22 35 39 51 56 64 69 73 78
// 36 38 52 55 65 68 74 77 79
// 37 53 54 66 67 75 76 80 81
//-------------9--------------