文章

239

粉丝

0

获赞

1135

访问

45.0k

头像
C翻转 题解:
P1376 北京邮电大学机试题
发布于2026年3月25日 19:24
阅读数 22

#include<iostream>
#include<cstring>
using namespace std;

const int N=6;

int n=5;
int a[N][N];

void turn1(int x,int y,int nums) //顺时针90°
{
    int b[N][N];
    memcpy(b,a,sizeof a);
    for(int i=x;i<=x+nums-1;i++)
        for(int j=y;j<=y+nums-1;j++)
        b[i][j]=a[x+nums-(j-y+1)][i];
    memcpy(a,b,sizeof a);
}

void turn2(int x,int y,int nums) //逆时针90°
{
    int b[N][N];
    memcpy(b,a,sizeof a);
    for(int i=x;i<=x+nums-1;i++)
        for(int j=y;j<=y+nums-1;j++)
        b[i][j]=a[j-y+x][y+nums-(i-x+1)];
    memcpy(a,b,sizeof a);
}

int main()
{
    for(int i=1;i<=n;i++)
        for(int j=1;j<=n;j++)
        cin>>a[i][j];
    int op1,op2,x,y;
    cin>>op1>>op2>>x>>y;
    if(op1==1&&op2==2)
    turn1(x,y,2);
    else if(op1==1&&op2==3)
    turn1(x,y,3);
    else if(op1==2&&op2==2)
    turn2(x,y,2);
    else
    turn2(x,y,3);
    for(int i=1;i<...
登录查看完整内容


登录后发布评论

暂无评论,来抢沙发