矩阵变换(华南师范ak杯2019一道oj题)

该代码段展示了一个C++程序,它读取一个n×n的矩阵,然后根据用户输入的指令(1、2、3分别代表顺时针旋转90度、逆时针旋转90度和转置矩阵)对矩阵进行相应操作。程序使用了工作向量来辅助旋转过程,并在每次操作后打印出结果。
摘要由CSDN通过智能技术生成

 一个参考:


#include<bits/stdc++.h>
using namespace std;


main(){
 	int n,m;
 	cin>>n>>m;
 	int a[n][n];
 	int x=n*n;
 	vector<int> work;
 	int lin=0;
 	for(int i=0;i<n;++i){
 		for(int j=0;j<n;++j){
 			cin>>a[i][j];
		 }
	 }
	int t;
	while(m--){
		cin>>t;
		if(t==1){
			for(int j=0;j<n;++j){
 				for(int i=n-1;i>=0;--i){
 					int k=a[i][j];
					work.push_back(k);
		 		}
	 		}
	 		for(int i=0;i<n;++i){
 				for(int j=0;j<n;++j){
 					a[i][j]=work[lin];
 					++lin;
		 		}
	 		}
	 		for(int i=0;i<x;++i){
	 			cout<<work[i]<<" ";
	 			if((i+1)%n==0)cout<<endl;
			 }
	 		cout<<endl;
	 		lin=0;
	 		work.clear();
	 	}	
			
		if(t==2){
			for(int j=n-1;j>=0;--j){
 				for(int i=0;i<n;++i){
 					int k=a[i][j];
					work.push_back(k);
 					//++lin;
		 		}
	 		}
	 		
	 		for(int i=0;i<n;++i){
 				for(int j=0;j<n;++j){
 					a[i][j]=work[lin];
 					++lin;
		 		}
	 		}
	 		
	 		for(int i=0;i<x;++i){
	 			cout<<work[i]<<" ";
	 			if((i+1)%n==0)cout<<endl;
			 }
	 		cout<<endl;
	 		lin=0;
	 		work.clear();
	 	}		
			
		if(t==3){
			for(int i=0;i<n;++i){
 				for(int j=0;j<n;++j){
 					work.push_back(a[i][j]);
 					//++lin;
				 }
	 		}
	 		lin=x-1;
	 		for(int i=0;i<n;++i){
 				for(int j=0;j<n;++j){
 					
 					a[i][j]=work[lin];
 					--lin;
		 		}
	 		}
	 		
	 		for(int i=x-1;i>=0;--i){
	 			cout<<work[i]<<" ";
	 			if(i%n==0)cout<<endl;
			 }
	 		cout<<endl;
	 		lin=0;
	 		work.clear();
	 	}		
			
			
	}
		
	
	
 }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值