블 루 브리지 컵 시 뮬 레이 션 2 - 나선형 행렬

제목
문제 설명 은 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;
}

좋은 웹페이지 즐겨찾기