귀환의 나선 방진
3818 단어 프로그래밍 - 반복
Time Limit: 1000 ms Memory Limit: 65536 KiB
Submit Statistic Discuss
Problem Description
n×n의 나선 방진은 n=5와 n=3일 때 각각 다음과 같은 형식이다
임의의 입력 n(0<n<11)에 대해 상기 규칙에 따라 출력된 n×n의 나선 방진.
Input
첫 번째 행위 정수 m(0<m<10)를 입력하면 m조의 입력이 있음을 나타낸다.다음은 m행 데이터입니다. 줄마다 n(0<n<11)을 입력하십시오.
Output
입력한 순서에 따라 순서대로 모든 n을 출력하다×n 방진 (한 방진의 같은 줄 데이터 사이'\t'로 구분) 두 출력 방진 사이에 빈 줄을 출력합니다.
Sample Input
1 4
Sample Output
1 2 3 4 12 13 14 5 11 16 15 6 10 9 8 7
Hint
Source
#include
#include
#include
void f(int n);
int tp,cn;
int a[14][14];
int main()
{
int t,n;
scanf("%d",&t);
while(t--)
{
tp=0,cn=1;
scanf("%d",&n);
f(n);
int i,j;
for(i=0; ifor(j=0; jif(j==n-1)
{
printf("%d
",a[i][j]);
}
else
{
printf("%d\t",a[i][j]);//\t Tab ,4 , 5
}
}
}
printf("
");
}
return 0;
}
void f(int n)
{
int i,j;
if(n<=0)return ;
else
{ i=tp;// 0
for(j=tp; j// 0
{
a[i][j]=cn++;
}
j=tp+n-1;//
for(i=tp+1; i//
{
a[i][j]=cn++;
}
i=tp+n-1;//
for(j=tp+n-2; j>=tp; j--)// ,
{
a[i][j]=cn++;
}
j=tp;//
for(i=tp+n-2; i>tp; i--)
{
a[i][j]=cn++;
}
}
tp++;
f(n-2);
}
Think: 사고방식은 모두 코드 안에 있다. 바로 한 바퀴 한 바퀴 걷는 것이다. 먼저 한 번 간 다음에 귀속으로 안의 동그라미를 반복할 수 있다. Note: 귀속할 때 임계 조건이 있어야 한다. 임계 조건이 없으면 귀속은 멈추지 않는다.