0
点赞
收藏
分享

微信扫一扫

C++ 实现二维数组旋转90度

点亮自己的那盏灯 2022-03-11 阅读 27
c++xcode
#include<iostream>
#include<cstdlib>
using namespace std;
#define N 4
void swap(int *a,int *b,int n){
	for(int i=0;i<n;i++){
		int temp=a[i];
		a[i]=b[i];
		b[i]=temp;
	}
}
void swapUpAndDown(int matrix[][N],int n){
	int up=0,down=n-1;
	while(up<=down){
		swap(matrix[up],matrix[down],n);
		up++;
		down--;
	}
}
void swapDiagonal(int matrix[][N],int n){
	for(int r=0;r<n;r++){
		for(int c=r+1;c<n;c++){
			int temp=matrix[r][c];
			matrix[r][c]=matrix[c][r];
			matrix[c][r]=temp;
		}
	}
}
void rotate(int matrix[][N],int n){
	swapUpAndDown(matrix, n);
	swapDiagonal(matrix, n);
}
void print(int matrix[][N],int n){
	for(int i=0;i<n;i++){
		for(int j=0;j<n;j++){
			cout<<matrix[i][j]<<" ";
		}
		cout<<" / ";
	}
	cout<<endl;
}
int main(){
	int matrix[N][N]={{5,1,9,11},{2,4,8,10},{13,3,6,7},{15,14,12,16}};
	rotate(matrix,N);
	print(matrix,N);
	return 0;
}



//方法二(外环转圈,内环转圈):

public void rotate(int[][] matrix) {
        int length = matrix.length;
        //因为是对称的,只需要计算循环前半行即可
        for (int i = 0; i < length / 2; i++)
            for (int j = i; j < length - i - 1; j++) {
                int temp = matrix[i][j];
                int m = length - j - 1;
                int n = length - i - 1;
                matrix[i][j] = matrix[m][i];
                matrix[m][i] = matrix[n][m];
                matrix[n][m] = matrix[j][n];
                matrix[j][n] = temp;
            }
    }







//方法三:完善了一下下,就是用case语句,让它按矩阵的方式输出:

#include<iostream>
#include<cstring>
#include<cstdlib>

#define N 4

using namespace std;

void swap(int* a,int* b,int n)
{
    for(int i=0;i<n;i++)
    {
        int temp=a[i];
        a[i]=b[i];
        b[i]=temp;
    }
}

void swapUpAndDown(int matrix[][N],int n)
{
    int up=0;
    int down=n-1;
    while(up<=down)
    {
        swap(matrix[up],matrix[down],n);
        up++;
        down--;
    }
}
void swapDiagnal(int matrix[][N],int n)
{
    for(int r=0;r<n;r++)
    {
        for(int c=r+1;c<n;c++)
        {
            int temp=matrix[r][c];
            matrix[r][c]=matrix[c][r];
            matrix[c][r]=temp;
        }
    }
}
void rotate(int matrix[][N],int n)
{
    swapUpAndDown(matrix,n);
    swapDiagnal(matrix,n);
}

void print(int matrix[][N],int n)
{
    int i = 0;
    switch(i)
    {
        case 0:
            for(int j=0;j<n;j++)
            {
                cout<<matrix[0][j]<<'\t';
            }
        cout<<endl;
        case 1:
        for(int j=0;j<n;j++)
        {
            cout<<matrix[1][j]<<'\t';
        }
    cout<<endl;
        case 2:
    for(int j=0;j<n;j++)
    {
        cout<<matrix[2][j]<<'\t';
    }
    cout<<endl;
        case 3:
    for(int j=0;j<n;j++)
    {
        cout<<matrix[3][j]<<'\t';
    }
            break;
    }
    cout<<endl;
}
int main()
{
    int matrix[N][N]={{5,1,9,11},{2,4,8,10},{13,3,5,7},{15,14,12,16}};
    rotate(matrix,N);
    print(matrix,N);
    return 0;

}



举报

相关推荐

0 条评论