/*N<=15을 입력받고 NxN크기의 달팽이 수열을 출력하는 프로그렘
왼쪽 위부터 시계방향으로 바깥 쪽에서 안쪽으로 자연수를 1부터 올림차순으로 출력
*/
#include <iostream>
#include <windows.h>
using namespace std;
int main(){
int n,i,j,c=0;
int a[15][15];
cin>>n;
//a번째 껍질에서 각 꼭지점으로부터 시계방향으로 n-2*(a-1)-1개씩 순서대로 입력
for(i=1;i<=n/2;i++){
//4개의 꼭짓점에서 시작
for(j=0;j<n-2*(i-1)-1;j++)a[i-1][i-1+j]=++c;
for(j=0;j<n-2*(i-1)-1;j++)a[i-1+j][n-i]=++c;
for(j=0;j<n-2*(i-1)-1;j++)a[n-i][n-i-j]=++c;
for(j=0;j<n-2*(i-1)-1;j++)a[n-i-j][i-1]=++c;
}
if(n%2==1)a[n/2][n/2]=++c;
for(i=0;i<n;i++){
for(j=0;j<n;j++)cout<<a[i][j]<<" ";
cout<<endl;
}
system("PAUSE");
return 0 ;
}
실행결과
10
1 2 3 4 5 6 7 8 9 10
36 37 38 39 40 41 42 43 44 11
35 64 65 66 67 68 69 70 45 12
34 63 84 85 86 87 88 71 46 13
33 62 83 96 97 98 89 72 47 14
32 61 82 95 100 99 90 73 48 15
31 60 81 94 93 92 91 74 49 16
30 59 80 79 78 77 76 75 50 17
29 58 57 56 55 54 53 52 51 18
28 27 26 25 24 23 22 21 20 19
Press any key to continue . . .
7
1 2 3 4 5 6 7
24 25 26 27 28 29 8
23 40 41 42 43 30 9
22 39 48 49 44 31 10
21 38 47 46 45 32 11
20 37 36 35 34 33 12
19 18 17 16 15 14 13
Press any key to continue . . .
왼쪽 위부터 시계방향으로 바깥 쪽에서 안쪽으로 자연수를 1부터 올림차순으로 출력
*/
#include <iostream>
#include <windows.h>
using namespace std;
int main(){
int n,i,j,c=0;
int a[15][15];
cin>>n;
//a번째 껍질에서 각 꼭지점으로부터 시계방향으로 n-2*(a-1)-1개씩 순서대로 입력
for(i=1;i<=n/2;i++){
//4개의 꼭짓점에서 시작
for(j=0;j<n-2*(i-1)-1;j++)a[i-1][i-1+j]=++c;
for(j=0;j<n-2*(i-1)-1;j++)a[i-1+j][n-i]=++c;
for(j=0;j<n-2*(i-1)-1;j++)a[n-i][n-i-j]=++c;
for(j=0;j<n-2*(i-1)-1;j++)a[n-i-j][i-1]=++c;
}
if(n%2==1)a[n/2][n/2]=++c;
for(i=0;i<n;i++){
for(j=0;j<n;j++)cout<<a[i][j]<<" ";
cout<<endl;
}
system("PAUSE");
return 0 ;
}
실행결과
10
1 2 3 4 5 6 7 8 9 10
36 37 38 39 40 41 42 43 44 11
35 64 65 66 67 68 69 70 45 12
34 63 84 85 86 87 88 71 46 13
33 62 83 96 97 98 89 72 47 14
32 61 82 95 100 99 90 73 48 15
31 60 81 94 93 92 91 74 49 16
30 59 80 79 78 77 76 75 50 17
29 58 57 56 55 54 53 52 51 18
28 27 26 25 24 23 22 21 20 19
Press any key to continue . . .
7
1 2 3 4 5 6 7
24 25 26 27 28 29 8
23 40 41 42 43 30 9
22 39 48 49 44 31 10
21 38 47 46 45 32 11
20 37 36 35 34 33 12
19 18 17 16 15 14 13
Press any key to continue . . .
댓글
댓글 쓰기