2019-04-08 과제 (달팽이 직사각형 만들기)
2019. 4. 9. 18:56ㆍLayer7
1. run에 인자 안넘김 -> 코드 복잡함
2. run에 인자 넘김 -> 코드 간단함
1. run에 인자 안넘김
#include <stdio.h>
int H = 10, W = 10;
int array[100 + 2][100 + 2] = { 0 };
void setup();
void run();
void print();
int main()
{
setup();
run();
print();
}
void setup()
{
printf("x, y 입력 : ");
scanf("%d %d", &W, &H);
int _for, __for;
for(_for = 0;_for < W + 2;_for++)
{
array[0][_for] = -1;
array[H + 1][_for] = -1;
}
for(_for = 0;_for < H + 2;_for++)
{
array[_for][0] = -1;
array[_for][W + 1] = -1;
}
array[1][1] = 1;
}
void run()
{
int h, w, num = -1, _for, __for;
for(_for = 0;_for < H + 2;_for++)
{
for(__for = 0;__for < W + 2;__for++)
{
if(num < array[_for][__for])
{
num = array[_for][__for];
h = _for;
w = __for;
}
}
}
num++;
if(num > H * W)
{
return;
}
if(array[h][w + 1] != 0)
{
if(array[h + 1][w] != 0)
{
if(array[h][w - 1] != 0)
{
array[--h][w] = num;
}
else
{
array[h][--w] = num;
}
}
else
{
array[++h][w] = num;
}
}
else if(array[h + 1][w] != 0 && array[h - 1][w] == 0)
{
array[--h][w] = num;
}
else
{
array[h][++w] = num;
}
run();
}
void print()
{
int _for, __for;
for(_for = 1;_for < H + 1;_for++)
{
for(__for = 1;__for < W + 1;__for++)
{
printf("%3d ", array[_for][__for]);
}
printf("\n");
}
}
//Scripted By ScriptConverter, using run_prettify.js
2. run에 인자 넘김
#include <stdio.h>
void run(int y, int x, int num, int mode);
void print();
int array[100][100] = { 0 }, h_[4] = {0, 1, 0, -1}, w_[4] = {1, 0, -1, 0}, h, w;
int main()
{
scanf("%d %d", &h, &w);
run(0, 0, 1, 0);
print();
}
void run(int y, int x, int num, int mode)
{
if(num > h * w)
{
return;
}
if(y >= h || y < 0 || x >= w || x < 0 || array[y][x] != 0)
{
y -= h_[mode];
x -= w_[mode];
mode = mode == 3 ? 0 : mode + 1;
}
else
{
array[y][x] = num++;
}
run(y + h_[mode], x + w_[mode], num, mode);
}
void print()
{
int _for, __for;
for(_for = 0;_for < h;_for++)
{
for(__for = 0;__for < w;__for++)
{
printf("%3d ", array[_for][__for]);
}
printf("\n");
}
}
//Scripted By ScriptConverter, using run_prettify.js
'Layer7' 카테고리의 다른 글
동적할당과 메모리구조 (0) | 2019.04.16 |
---|---|
2019-04-08 과제 (정사각형 숫자 대각선 만들기) (0) | 2019.04.09 |
2019-04-08 과제 (달팽이 정사각형 만들기) (0) | 2019.04.09 |
포인터 보고서 (0) | 2019.04.07 |
함수 보고서 (0) | 2019.04.06 |