블 루 브리지 컵 시 뮬 레이 션 2 - 나선형 행렬
16726 단어 블 루 브리지 컵 시험 문제 연습 - 경기 시험 문제
문제 설명 은 n 행 m 열 표 에 대해 우 리 는 나선형 으로 표 에 정 수 를 순서대로 작성 할 수 있 습 니 다. 우 리 는 작성 한 표를 나선형 행렬 이 라 고 부 릅 니 다.예 를 들 어 4 줄 5 열의 나선형 행렬 은 다음 과 같다. 1, 2, 3, 4, 14, 15, 16, 6, 13, 19, 17, 12, 11, 109 8 입력 형식 입력 의 첫 줄 은 두 개의 정수 n, m 를 포함 하고 나선형 행렬 의 줄 수 와 열 수 를 나타 낸다.두 번 째 줄 은 두 개의 정수 r, c 를 포함 하고 요구 하 는 줄 번호 와 열 번 호 를 표시 합 니 다.출력 형식 은 나선형 행렬 의 r 행 c 열 요소 의 값 을 나타 내 는 정 수 를 출력 합 니 다.샘플 입력 4522 사례 출력 15 평가 사례 규모 와 약정 30% 에 대한 평가 사례, 2 < = n, m < = 20.70% 의 평가 용례 에 대해 2 < = n, m < = 100.모든 평가 용례 에 대해 2 < = n, m < = 1000, 1 < = r < = n, 1 < = c < = m.
테스트 코드 (비 제출 코드, 이해 하기 편리)
#include
int f[100][100];
int work(int n,int m){
int i=0,j=0,k,h=1;
int a=0,b=0, c = n,d = m;
while(h<=n*m){
for(i=a;i<d;i++){
f[b][i]=h;
h++;
}b++;
for(i=b;i<c;i++){
f[i][d-1]=h;
h++;
}c--;
for(i=d-2;i>=a;i--){
f[c][i]=h;
h++;
}d--;
for(i=c-1;i>=b;i--){
f[i][a]=h;
h++;
}a++;
}
for(i=0;i<n;i++){
for(j=0;j<m;j++){
printf("%3d ",f[i][j]);
}
printf("
");
}
return 0;
}
int main(){
int n,m,r,c;
printf(" n m
");
scanf("%d%d",&n,&m);
work(n,m);
return 0;
}
정식 제출 코드
#include
int f[1000][1000];
int work(int n,int m){
int i=0,j=0,k,h=1;
int a=0,b=0, c = n,d = m;
while(h<=n*m){
for(i=a;i<d;i++){
f[b][i]=h;
h++;
}b++;
for(i=b;i<c;i++){
f[i][d-1]=h;
h++;
}c--;
for(i=d-2;i>=a;i--){
f[c][i]=h;
h++;
}d--;
for(i=c-1;i>=b;i--){
f[i][a]=h;
h++;
}a++;
}
return 0;
}
int main(){
int n,m,r,c;
scanf("%d%d",&n,&m);
scanf("%d%d",&r,&c);
work(n,m);
printf("%d",f[r-1][c-1]);
return 0;
}