달팽이모양 숫자 배열..
세찬
#includestdio.hvoid snail(int (*pa)[10],int m);int main(void){
int arr[10][10]={0};
int n;
int i,j;
printf(수를 입력:);
scanf(%d,&n); //수 입력 for(i=0;in;i++){ //첫번째 줄 출력
arr[0][i]=i+1;
}
snail(arr,n); //함수호출
for(i=0;in;i++){
for(j=0;jn;j++){
printf(%4d,arr[i][j]);
}
printf(\n);
}
return 0;
}void snail(int (*pa)[10],int m){
int a=1,b=m-1,c=m-1,d=m-2; //고정값
int e=m-2,f=0,g=1,h=1; //고정값
int count=m+1; //입력+1 부터 카운터시작
int y;
int k=1;
int i; for(i=m-1;i0;i--){
if(k%2==1){
for(y=0;yi;y++){
pa[a+y][b]=count;
count++;
}
a=a+1;
b=b-1; for(y=0;yi;y++){
pa[c][d-y]=count;
count++;
}
c=c-1;
d=d-1;
k++;
}
else{
for(y=0;yi;y++){
pa[e-y][f]=count;
count++;
}
e=e-1;
f=f+1; for(y=0;yi;y++){
pa[g][h+y]=count;
count++;
}
g=g+1;
h=h+1;
k++;
}
}
}
잘짠건가요..?
예를들면 5 x 5배열) 첫줄 5까지채우고 남서북동 순서로 4 4 3 3 2 2 1 1 번 이런식..
두시간반 동안 고민하고 풀었습니다ㅠㅠ
답을보니깐 엄청짧던데..ㅠㅠ먼가 억울합니다 흑
-
로지
제가 하던방법은 배열 칸수 줄수를 하나씩 빼가면서 회전시켰습니다.
ex) 1 2 3 4 5 5번 찍어냅니다.
6 5-1 즉 4번을 세로로 찍어냅니다.
7
8
9