icoding 随机步法
题目:
![image-20221114163945842](https://img-blog.csdnimg.cn/img_convert/f201add86a3d1f3a56a889f301087f3d.png)
代码:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define UP 0
#define DOWN 1
#define LEFT 2
#define RIGHT 3
int main()
{
int i, j, direct;
char a[12][12], letter = 'A';
for (i = 0; i < 12; i++) {
for (j = 0; j < 12; j++) {
if (i == 0 || j == 0 || i == 11 || j == 11)
a[i][j] = '#';
else
a[i][j] = '.';
}
}
i = 1;
j = 1;
a[i][j] = 'A';
letter = 'B';
srand((unsigned)time(NULL));
while (letter <= 'Z') {
direct = rand() % 4;
if (direct == UP && a[i - 1][j] == '.') {
i--;
a[i][j] = letter;
letter++;
}
if (direct == DOWN && a[i + 1][j] == '.') {
i++;
a[i][j] = letter;
letter++;
}
if (direct == LEFT && a[i][j - 1] == '.') {
j--;
a[i][j] = letter;
letter++;
}
if (direct == RIGHT && a[i][j + 1] == '.') {
j++;
a[i][j] = letter;
letter++;
}
if (a[i - 1][j] != '.' && a[i + 1][j] != '.' && a[i][j - 1] != '.' && a[i][j + 1] != '.') {
break;
}
}
for (i = 1; i < 11; i++) {
for (j = 1; j < 11; j++) {
printf("%3c", a[i][j]);
}
printf("\n");
}
return 0;
}