编写程序,生成一种贯穿10*10字符数组(初始时全为字符 ‘.’ )的“随机步法”。程序必须随机地从一个元素“走到”另一个元素,每次都上下、向左或向右移动一个元素位置。已访问过的元素按访问顺序用字母A到Z进行标记。【C】——我写的很菜= =、、、
#include<stdio.h>
#include<stdbool.h>
#include<stdlib.h>
#include<time.h>
#define N 10
int main()
{
char a[N][N] = { { '.' ,'.','.','.','.','.','.','.','.','.' },
{ '.' ,'.','.','.','.','.','.','.','.','.' },
{ '.' ,'.','.','.','.','.','.','.','.','.' },
{ '.' ,'.','.','.','.','.','.','.','.','.' },
{ '.' ,'.','.','.','.','.','.','.','.','.' },
{ '.' ,'.','.','.','.','.','.','.','.','.' },
{ '.' ,'.','.','.','.','.','.','.','.','.' },
{ '.' ,'.','.','.','.','.','.','.','.','.' },
{ '.' ,'.','.','.','.','.','.','.','.','.' },
{ '.' ,'.','.','.','.','.','.','.','.','.' } };
int b[N][N] = { { 0 } };
bool c[N] = { false };
int i, j, k, ch, num, n=0;
srand((unsigned)time(NULL));
i = (int)(rand() % N);
j = (int)(rand() % N);
while ((0 <= i < N) && (0 <= j < N))
{
for (ch = 'A';ch <= 'Z';ch++)
{
a[i][j] = ch;
b[i][j] = 1;
for (k = 0;k < N;k++)
{
if (c[k] == true)
c[k] = false;
}
P:switch (num = (int)(rand() % N))
{
case 3:
{
i = i - 1;j = j;
if (((i >= N) || (i < 0)) || ((j >= N) || (j < 0)))
{
i = i + 1, j = j;
c[3]=true;
if ((c[0] == true) && (c[1] == true) && (c[2] == true) && (c[3] == true))
{
exit(0);
}
goto P;
}
break;
}
case 2:
{
i = i, j = j - 1;
if (((i >= N) || (i < 0)) || ((j >= N) || (j < 0)))
{
i = i, j = j + 1;
c[2] = true;
if ((c[0] == true) && (c[1] == true) && (c[2] == true) && (c[3] == true))
{
exit(0);
}
goto P;
}
break;
}
case 1:
{
i = i + 1, j = j;
if (((i >= N) || (i < 0)) || ((j >= N) || (j <0)))
{
i = i - 1, j = j;
c[1] = true;
if ((c[0] == true ) && (c[1] == true ) && (c[2] == true ) && (c[3] == true ))
{
exit(0);
}
goto P;
}
break;
}
case 0:
{
i = i, j = j + 1;
if (((i >= N) || (i < 0)) || ((j >= N) || (j < 0)))
{
i = i, j = j - 1;
c[0] = true;
if ((c[0] == true) && (c[1] == true) && (c[2] == true) && (c[3] == true))
{
exit(0);
}
goto P;
}
break;
}
default:
break;
}
if (b[i][j] == 1)
{
if(num==0)
{
i = i, j = j - 1;
c[0] = true;
if ((c[0] == true) && (c[1] == true) && (c[2] == true) && (c[3] == true))
{
exit(0);
}
}
else if (num == 1)
{
i = i - 1, j = j;
c[1] = true;
if ((c[0] == true) && (c[1] == true) && (c[2] == true) && (c[3] == true))
{
exit(0);
}
}
else if (num == 2)
{
i = i, j = j + 1;
c[2] = true;
if ((c[0] == true) && (c[1] == true) && (c[2] == true) && (c[3] == true))
{
exit(0);
}
}
else if (num == 3)
{
i = i + 1, j = j;
c[3] = true;
if ((c[0] == true) && (c[1] == true) && (c[2] == true) && (c[3] == true))
{
exit(0);
}
}
goto P;
}
}
}
return 0;
}