N*N矩阵的旋转 不开辟新空间
/*
N*N矩阵的旋转
不开辟新空间
programmer:qpz
time:2014-11-09
*/
#include <iostream>
using namespace std;
//#define MAX 3
const int MAX=3;
class cou{
private:
int x;
int y;
char num[MAX][MAX];
public:
cou(){}
cou(char num[MAX][MAX]);
void Prin(void);
void rotate(void);
};
void Init(char a[MAX][MAX],int n,int m);
int main(void)
{
char arr[MAX][MAX],time;
Init(arr,MAX,MAX);
cou Matrix;
Matrix=cou(arr);
Matrix.Prin();
cout<<"请输入旋转几次:"<<endl;
cin>>time;
time=time%4;
while(time--){
Matrix.rotate();
}
Matrix.Prin();
return 0;
}/*end main*/
void Init(char a[MAX][MAX],int n,int m)
{
int i,j;
cout<<"请输入矩阵3*3:"<<endl;
for(i=0;i<n;i++){
for(j=0;j<m;j++){
cin>>a[i][j];
}/*end for*/
}/*end for*/
}/*end Init*/
cou::cou(char num[MAX][MAX])
{
for(x=0;x<MAX;x++){
for(y=0;y<MAX;y++){
this->num[x][y]=num[x][y];
}/*end for*/
}/*end for*/
}/*end cou()*/
void cou::Prin(void)
{
for(int i=0;i<MAX;i++){
for(int j=0;j<MAX;j++){
cout<<num[i][j];
}/*end for*/
cout<<endl;
}/*end for*/
}/*end Prin()*/
void cou::rotate(void)
{
//cout<<"首先行列互换"<<endl;
for(x=0;x<MAX;x++){
for(y=1+x;y<MAX;y++)
{
num[x][y]=num[x][y]^num[y][x];
num[y][x]=num[x][y]^num[y][x];
num[x][y]=num[x][y]^num[y][x];
} /*end for*/
}/*end for*/
//Prin();
//cout<<endl<<"然后进行左右互换"<<endl;
for(x=0;x<MAX;x++){
for(y=0;y<MAX/2;y++){
num[x][y]=num[x][y]^num[x][MAX-y-1];
num[x][MAX-y-1]=num[x][y]^num[x][MAX-y-1];
num[x][y]=num[x][y]^num[x][MAX-y-1];
} /*end for*/
}/*end for*/
//Prin();
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异