我刚刚开始一个项目,遇到了一些麻烦。想法是制作一个8x8数组,该数组随机生成一个包含10个块,一个随机起点和右上角为“出口”的数组。然后程序将找到最快的路径,输出将是随机生成的数组以及出口的方向(即,向上,向上,向右,向右,向上,向左)
显然,之后我需要采取许多步骤来使阵列执行我想要的操作,但是我想知道是否有人可以帮助我弄清楚如何进行设置,从而使其看起来像(E = exit, X =块,Z =起点)
0 0 0 0 X 0 0 E
0 0 X 0 0 0 0 0
0 0 0 0 0 X 0
0 X 0 0 X 0 0 0
0 0 0 0 0 0 0 X
X 0 0 X 0 Z 0 0
0 0 0 0 0 0 0 0
0 0 X 0 0 0 X 0
到目前为止,我有这个程序。幸运的是,它放置了十个随机的-1和随机的起点(我现在将其设置为'7',但最终会更改它),但是我似乎无法保证右上角不会移动成为我需要的-1之一,然后由99代替,剩下的只有9个-1而不是所需的10个。
#include <stdio.h>
#include <stdlib.h>
#define ROW 8
#define COLUMN 8
#define NUM 10
#define start 1
int main () {
int x, y;
int array[ROW][COLUMN];
for (x = 0; x < ROW; x++) {
for (y = 0; y < COLUMN; y++) {
array[x][y] = 0;
}
}
srand (time (NULL));
for (x = 0; x < NUM; x++) {
int t = rand () % ROW;
y = rand () % COLUMN;
if (array[t][y] != -1) {
array[t][y] = -1;
} else {
x--;
}
}
for (x = 0; x < start; x++)
{
int t = rand () % ROW;
y = rand () % COLUMN;
if (array[t][y] != 7) {
array[t][y] = 7;
} else { x--;
}
}
for (x = 0; x < ROW; x++) {
for (y = 0; y < COLUMN; y++) {
array[0][7] = 99;
printf ("%d ", array[x][y]);
}
printf ("\n");
}
return 0; }
任何帮助将不胜感激-我是一个糟糕的程序员。
如果我理解您的问题,那么我将从将数组内容初始化为零(而不是-1)开始,我还将define
要随机设置为-1的元素数。
#include <stdio.h>
#include <stdlib.h>
#define ROW 8
#define COLUMN 8
#define NUM 10
int main (int argc, char *argv[]) {
int x, y;
int array[ROW][COLUMN];
for (x = 0; x < ROW; x++) {
for (y = 0; y < COLUMN; y++) {
array[x][y] = 0;
}
}
然后我们可以将NUM
元素随机设置为-1
srand (time (NULL));
for (x = 0; x < NUM; x++) {
int t = rand () % ROW;
y = rand () % COLUMN;
if (array[t][y] != -1) {
array[t][y] = -1;
} else {
x--;
}
}
最后,我们可以使用类似以下内容打印结果
for (x = 0; x < ROW; x++) {
for (y = 0; y < COLUMN; y++) {
printf ("%d ", array[x][y]);
}
printf ("\n");
}
return 0;
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句