文章

1

粉丝

26

获赞

1

访问

643

头像
旋转矩阵 题解:简单粗暴的解法
P1221 同济大学机试题
发布于2024年5月5日 10:57
阅读数 643

两个矩阵交替使用,避免每次操作使用修改后的元素带来错误。
flag==1,当前使用ans1矩阵,flag==2,当前使用ans2矩阵。
三个操作都很简单,找规律就行。
#include<cstdio>
using namespace std;

int ans1[110][110]={0};
int ans2[110][110]={0};
int flag=0;
void swap(int &a,int &b){
    int temp=a;
    a=b;
    b=temp;
}
void rotate90(int &n,int&m){
    if(flag==1){
        for(int i=1;i<=n;i++){
            for(int j=1;j<=m;j++){
                ans2[j][n-i+1]=ans1[i][j];
            }
        }
        flag=2;
    }else if(flag==2){
        for(int i=1;i<=n;i++){
            for(int j=1;j<=m;j++){
                ans1[j][n-i+1]=ans2[i][j];
            }
        }
        flag=1;
    }
    swap(n,m);
}
void rotate_90(int &n,int&m){
    if(flag==1){
        for(int i=1;i<=n;i++){
            for(int j=1;j<=m;j++){
                ans2[m-j+1][i]=ans1[i][j];
            }
        }
        flag=2;
    }else if(flag==2){
        for(int i=1;i<=n;i++){
            fo...
登录查看完整内容


登录后发布评论

暂无评论,来抢沙发