PAT 1050 나선형 매트릭스 (25 점)

1883 단어 PAT B 급알고리즘
이 문 제 는 주어진 N 개의 정 수 를 증가 하지 않 는 순서에 따라 '나선형 행렬' 에 채 워 야 한다.나선형 행렬 이란 왼쪽 상단 의 첫 번 째 칸 부터 시계 방향 으로 나선형 으로 채 우 는 것 을 말한다.요구 매트릭스 의 규 모 는 m 행 n 열 이 고 만족 조건: m×n 은 N 과 같다.m≥n;그리고 m - n 은 모든 가능 한 값 중 가장 작은 값 을 취한 다.입력 형식:
첫 번 째 줄 에 정수 N 을 입력 하고 두 번 째 줄 에 채 울 정수 N 을 입력 하 십시오.모든 숫자 는 104 를 넘 지 않 고 인접 숫자 는 빈 칸 으로 구분 된다.출력 형식:
출력 나선 행렬.줄 당 n 개의 숫자, 총 m 줄.인접 한 숫자 는 하나의 빈 칸 으로 구분 되 며, 줄 끝 에 빈 칸 이 있어 서 는 안 된다.입력 예시:
12 37 76 20 98 76 42 53 95 60 81 58 93 수출 사례:
98 95 93 42 37 81 53 76 60 76 단 오 류 는 배열 이 너무 크게 열 렸 거나 10000 * 10000 을 방문 한 것 입 니 다. 아니면 크로스 오 버 라 는 나선형 을 처음 만 났 습 니 다. 저 는 흰 자 수준 입 니 다. 방금 배 운 시 뮬 레이 션 방법 으로 스스로 순환 N 회 를 시 작 했 습 니 다. 내부 순환 에는 네 개가 있 습 니 다. 하 나 는 위 에서 오른쪽으로 모 의 하면 줄 이 변 하지 않 고 열 + 1 을 만 났 습 니 다. 열의 최대 경계 가 멈 추 었 습 니 다.(첫 번 째 라운드), 혹은 다음 라운드 가 0 이 아니 라 (다음 라운드 가 거의 채 워 졌 음 을 나타 내 며, 그렇게 오래 지속 되 지 않 아 도 된다 는 뜻) 3 변 의 동 리 를 남 겼 습 니 다. 사상 은 행, 열 입 니 다. 지난 라운드 의 모든 내 순환 (또는 처음 시작 하 는 1 라운드) 의 행 과 열 을 답습 한 다음 경 계 를 판단 하 는 것 입 니 다.
#include
#include
void sort(int *number,int n)
{
	int i,j,t;
	for(i=0;i0;n--)
	{	int q=0;
		for(m=sqrt(N);m<=N;m++)
		{
			if(m*n==N)
			{
				q=1;
				break;
			}
		}
		if(q)
		break;
	}
	while(count0;lie--)//   
		{
			if(arr[hang][lie]==0)//     
			{
				arr[hang][lie]=number[count++];
			}
			if(arr[hang][lie-1]!=0||lie==1)//                
			break;
		}
		for(;hang>0;hang--) 
		{
			if(arr[hang][lie]==0)//      
			{
				arr[hang][lie]=number[count++];
			}
			if(arr[hang-1][lie]!=0||hang==1)
			break;
		}
	}
	for(i=1;i<=m;i++)
	{
		for(j=1;j<=n;j++)
		{	
			if(j!=1)
			printf(" ");
			printf("%d",arr[i][j]);
		}
		printf("
"); } }

좋은 웹페이지 즐겨찾기