必ず解ける迷路
Posted feedbacks - C
O(n)のアルゴリズムは、棒倒し法しか思いつかない。 穴掘り法はある程度、美しいんだけど、O(n^2)だし。 棒倒し法で棒を倒す方向を決定するのに、 周囲の環境を見て決めるように、パラメータチューニングするしかないのかなぁ。 と考え中。 ↓は綺麗だけどお題を満たさない答え。 迷路(笑)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | #include<stdio.h>
#include<stdlib.h>
int main()
{
int x,y,n,m;
n = 10;
m = 20;
for (y = 0; y < m; y++){
for (x = 0; x < n; x++){
printf(rand() > RAND_MAX / 2 ? "/" : "\");
}
printf("\n");
}
}
|
反則だろうと思って投稿を思い止まっていたのにーw 棒を倒す方向を右か下に限定することによって 速度もコード量もそれなりではないかと思います☆
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | #include<stdio.h>
#include<stdlib.h>
#include<time.h>
#define X 17
#define Y 15
int main(void){
char maze[X - 1], *pattern[] = {" ", "■"};
int i, j;
srand((unsigned)time(NULL));
for(i = 0; i < X; i++)
printf("■■");
printf("■\n■%*s", X * 4 - 2, "");
for(j = 0; j < Y - 1; j++){
printf("■\n■ ");
for(i = 0; i < X - 1; i++)
printf("■%s", pattern[maze[i] = rand() / (RAND_MAX + 1.0) * 2]);
printf("■\n■ ");
for(i = 0; i < X - 1; i++)
printf("%s ", pattern[1 - maze[i]]);
}
printf("■\n■");
for(i = 0; i < X; i++)
printf("■■");
printf("\n");
return 0;
}
|




squld
#5275()
Rating9/11=0.82
[ reply ]