【CareerCup】 Arrays and Strings—Q1.5

1841 단어 StringarrayCareercup
전재 출처 를 밝 혀 주 십시오:http://blog.csdn.net/ns_code/article/details/21478019
    제목:
    Given an image represented by an NxN matrix, where each pixel in the image is 4 bytes, write a method to rotate the image by 90 degrees. Can you do this in place?
    번역:
    그림 의 픽 셀 당 4 개의 바이트 가 있 는 NxN 의 행렬 로 그림 을 표시 하고 함 수 를 써 서 그림 을 90 도 회전 시 킵 니 다.회전 작업 은 가능 한 한 제자리 에서 조작 해 야 한다 (즉, 추가 저장 공간 을 열지 않 는 다).
    생각:
    우 리 는 여기 서 시계 반대 방향 으로 회전 하 는 것 을 예 로 들 수 있다.시계 반대 방향 으로 회전 한 행렬 을 얻 는 것 이다.
    구현 코드:
/*******************************************************
题目描述:
将n*n的矩阵原地(即不开辟额外的辅助空间)逆时针旋转90度
Date:2014-03-18
********************************************************/
#define N 4
#include<stdio.h>

void swap(int *a,int *b)
{
	*a = *a + *b;
	*b = *a - *b;
	*a = *a - *b;
}

void rotate(int A[][N],int n)
{
	int i,j;
	for(i=0;i<n;i++)
		for(j=i+1;j<n;j++)
			swap(&A[i][j],&A[j][i]);
	for(i=0;i<n/2;i++)
		for(j=0;j<n;j++)
			swap(&A[i][j],&A[n-i-1][j]);
}

int main()
{
	int A[N][N] = 
	{
		{11,12,13,14},
		{15,16,17,18},
		{19,20,21,22},
		{23,24,25,26}
	};

	int i,j;
	printf("the orginal matrix:
"); for(i=0;i<N;i++) { for(j=0;j<N;j++) printf("%d ",A[i][j]); printf("
"); } rotate(A,N); printf("the rotated matrix:
"); for(i=0;i<N;i++) { for(j=0;j<N;j++) printf("%d ",A[i][j]); printf("
"); } return 0; }

    테스트 결과:
【CareerCup】 Arrays and Strings—Q1.5_第1张图片

좋은 웹페이지 즐겨찾기