변경이력

돌아가기
3 2개 문자 추가

2017/01/11 06:05

코딩초보

심화는 .... 어렵워서 ㅠㅠ .... 100 * 100하는데 꾀 걸림 ㅠㅠ. stay : 108 , move : 287 Board 17 38 35 13 1 27 19 15 7 2 28 13 11 3 1 11 14 4 4 2 1 4 4 1 3 계속하려면 아무 키나 누르십시오 . . . ``` #include <stdio.h> #include <stdlib.h> #include <time.h> void move(int* x, int* y); bool verdict(int** arr); int h, w; int stay; void main() { srand(time(NULL)); int init_x =0, init_y = 0; int x, y; x = init_x; y = init_y; h=5; w=5; stay = 0; //arr[y][x]; int** arr = (int**) malloc (sizeof(int*) * h); for(int i=0;i<h;i++) arr[i] = (int*) malloc (sizeof(int*) * w); for(int i=0;i<h;i++) for(int j=0;j<h;j++) arr[i][j] = 0; while(!verdict(arr)) { move(&x, &y); arr[y][x]++; } int sum = 9; for(int i=0;i<h;i++) for(int j=0;j<h;j++) sum = sum + arr[i][j]; printf("stay : %d , sum : %d\n", stay, sum); printf("\n\nBoard\n"); for(int i=0;i<h;i++){ for(int j=0;j<h;j++) { printf("%d\t", arr[i][j]); } printf("\n"); } } bool verdict(int** arr) { for(int i=0;i<h;i++) for(int j=0;j<h;j++) if(arr[i][j]==0) return false; return true; } void move(int* x, int* y) { int d = rand()%8; int sx = *x, sy = *y; switch(d) { case 1: if(*y-1 >=0 && *x-1>=0) { (*y)--; (*x)--; } break; case 2: if(*y-1 >=0) (*y)--; break; case 3: if(*y-1 >=0 && *x+1<w) { (*y)--; (*x)++; } break; case 4: if(*x-1 >=0) (*x)--; break; case 5: if(*x+1<w) (*x)++; break; case 6: if(*x-1 >=0 && *y+1 < h) { (*y)++; (*x)--; } break; case 7: if(*y+1 < h) (*y)++; break; case 8: if(*y+1 < h && *x+1 < w) { (*y)++; (*x)++; } break; } if(sx==*x && sy==*y) stay++; } ```
심화는 .... 어렵워서 ㅠㅠ .... 100 * 100하는데 꾀 걸림 ㅠㅠ. stay : 108 , move : 287 Board 17 38 35 13 1 27 19 15 7 2 28 13 11 3 1 11 14 4 4 2 1 4 4 1 3 계속하려면 아무 키나 누르십시오 . . . ``` #include <stdio.h> #include <stdlib.h> #include <time.h> void move(int* x, int* y); bool verdict(int** arr); int h, w; int stay; void main() { srand(time(NULL)); int init_x =0, init_y = 0; int x, y; x = init_x; y = init_y; h=5; w=5; stay = 0; //arr[y][x]; int** arr = (int**) malloc (sizeof(int*) * h); for(int i=0;i<h;i++) arr[i] = (int*) malloc (sizeof(int*) * w); for(int i=0;i<h;i++) for(int j=0;j<h;j++) arr[i][j] = 0; while(!verdict(arr)) { move(&x, &y); arr[y][x]++; } int sum = 9; for(int i=0;i<h;i++) for(int j=0;j<h;j++) sum = sum + arr[i][j]; printf("stay : %d , sum : %d\n", stay, sum); printf("\n\nBoard\n"); for(int i=0;i<h;i++){ for(int j=0;j<h;j++) { printf("%d\t", arr[i][j]); } printf("\n"); } } bool verdict(int** arr) { for(int i=0;i<h;i++) for(int j=0;j<h;j++) if(arr[i][j]==0) return false; return true; } void move(int* x, int* y) { int d = rand()%8; int sx = *x, sy = *y; switch(d) { case 1: if(*y-1 >=0 && *x-1>=0) { (*y)--; (*x)--; } break; case 2: if(*y-1 >=0) (*y)--; break; case 3: if(*y-1 >=0 && *x+1<w) { (*y)--; (*x)++; } break; case 4: if(*x-1 >=0) (*x)--; break; case 5: if(*x+1<w) (*x)++; break; case 6: if(*x-1 >=0 && *y+1 < h) { (*y)++; (*x)--; } break; case 7: if(*y+1 < h) (*y)++; break; case 8: if(*y+1 < h && *x+1 < w) { (*y)++; (*x)++; } break; } if(sx==*x && sy==*y) stay++; } ```
2 8개 문자 추가

2017/01/11 06:05

코딩초보

1 Original

2017/01/11 06:04

코딩초보

코딩도장

코딩도장은 프로그래밍 문제풀이를 통해서 코딩 실력을 수련(Practice)하는 곳입니다.