[C言語]伯俊2447:星辰-10



進捗


どうすればいいのか分からなかったのでヒントをもらいました.n=9といえば、*で埋めた後、特定の条件下で空白処理すればよい.
*********
* ** ** *
*********
***   ***
* *   * *
***   ***
*********
* ** ** *
*********
9 x 9の場合、左上隅座標は0,0とする.真ん中のおおらかなところにナビを置いて行きましょうでは残りのスペースです.
1,1 4,1 7,1
1,4スペース7,4
1,7 4,7 7,7
規則的なx%3=1&&y%3=1の場合は、スペースを追加します.
今、真ん中の広々とした場所のルールを探してみましょう.x=3,4,5,y=3,4,5です.n値を3(n=3)で割ってn値を加えるとx/n=1,y/n=1のルールがあります.
ルールができたので、表に記入すればいいです.
(x%3==1&&y%3==1)|(x/n=1&y/n==1)なので最初はそう書いていたのですが、コードが変なところに戻ってgooglingを行いました.
最終的には、(x/n)%3=1&(y/n)%3=1の方式を採用し、コードを見てみましょう.
#include <stdio.h>

int star(int x, int y, int n)
{
	if ((x / n) % 3 == 1 && (y / n) % 3 == 1)
	{
		printf(" ");
	}
	else
	{
		if (n / 3 == 0) // 종료조건
			printf("*");
		else
		{
			star(x, y, n / 3); // 재귀
		}
	}
}

int main()
{
	int n, i, j;
	scanf("%d", &n);
	i = 0;
	while (i < n)
	{
		j = 0;
		while (j < n)
		{
			star(i, j, n);
			j++;
		}
		printf("\n");
		i++;
	}
}
n/3で再帰し、最終的にはスペースを付けることができます.
https://hou27.tistory.com/entry/BaekjoonC%EC%96%B8%EC%96%B4-2447%EB%B2%88-%EB%B3%84%EC%B0%8D%EA%B8%B0-10はここで多くの助けを得ました.