文章

15

粉丝

446

获赞

2

访问

122.9k

头像
同1377,用一维数组存读取顺序,不进行旋转
P1221 同济大学机试题
发布于2021年2月5日 17:56
阅读数 8.6k

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
void f(int a[][100],int &n,int &m,int cmd)//m,n调用方式为引用
{
	int s[10000],cnt=0;
	switch(cmd)
	{
		case 1:{
			for(int j=0;j<m;j++)
				for(int i=n-1;i>=0;i--)
					s[cnt++]=a[i][j];
			swap(n,m);//交换m,n 即交换矩阵行列的值,以保持代码方便
			break;
		}
		case 2:{
			for(int i=0;i<n;i++)
				for(int j=m-1;j>=0;j--)
					s[cnt++]=a[i][j];
			break;
		}
		default: ;
	}
	cnt=0;
	for(int i=0;i<n;i++)
		for(int j=0;j<m;j++)
			a[i][j]=s[cnt++];//从a中读取后,在放回a中,节省空间
	return ;
}
int main()
{
    int n,m,k;
    while(cin>>n>>m>>k)
    {
    	int a[100][100];
    	for(int i=0;i<n;i++)
    		for(int j=0;j<m;j++)
    			cin>>a[i][j];
    	for(int i=0;i<k;i++)
    	{
    		int cmd;
    		cin>>cmd;
    		if(cmd==3)//逆时针90即三次顺时针90
    		{
    			f(a,n,m,1);
    			f(a,n,m,1);
    			f(a,n,m,1);
			}
    		else f(a,n,m,cmd);
		}
		fo...
登录查看完整内容


登录后发布评论

暂无评论,来抢沙发