10测试点ac,别的wa,qwq
查看原帖
10测试点ac,别的wa,qwq
724449
qiuyc2333楼主2022/8/19 21:16
#include<iostream>
using namespace std;
int nums[510][510];
void left(int x,int y,int r)//逆
{
    //基本思路:第一行变成第一列、第二行变成第二列、……、最后一行变成最后一列
    //(在nums里)左上角=nums[x-r-1][y-r-1];(在tmp里)左下角=tmp[0][2*r]
    int tmp[2*r+1][2*r+1];
    for(int i=0;i<2*r+1;i++){//i:x,j:y
        for(int j=0;j<2*r+1;j++) tmp[j][2*r-i]=nums[x-r-1+i][x-r-1+j];
    }
    for(int i=0;i<2*r+1;i++){
        for(int j=0;j<2*r+1;j++) nums[x-r-1+i][x-r-1+j]=tmp[i][j];
        //for(int j=0;j<2*r+1;j++) cout<<tmp[i][j]<<" ";    //for debug
        //cout<<endl;                                       //for debug
    }

}
void right(int x,int y,int r)//顺
{
    //基本思路:第一行变成最后一列、第二行变成倒数第二列、……、最后一行变成第一列
    //(在nums里)左上角=nums[x-r-1][y-r-1];(在tmp里)右上角=tmp[2*r][0]
    int tmp[2*r+1][2*r+1];
    for(int i=0;i<2*r+1;i++){//i:x,j:y
        for(int j=0;j<2*r+1;j++) tmp[2*r-j][i]=nums[x-r-1+i][x-r-1+j];
    }
    for(int i=0;i<2*r+1;i++){
        for(int j=0;j<2*r+1;j++) nums[x-r-1+i][x-r-1+j]=tmp[i][j];
        //for(int j=0;j<2*r+1;j++) cout<<tmp[i][j]<<" ";    //for debug
        //cout<<endl;                                       //for debug
    }

}
int main(){
    int n,m,x,y,r,z;
    cin>>n>>m;
    for(int i=0;i<n;i++){
        for(int j=0;j<n;j++) nums[i][j]=1+i*n+j;
    }
    for(int i=0;i<n;i++){
        for(int j=0;j<n;j++) cout<<nums[i][j]<<" ";         //for debug
        cout<<endl;
    }
    cout<<endl<<endl;                                       //for debug
    for(int i=0;i<m;i++)
    {  
        cin>>x>>y>>r>>z;
        if(z==0) left(x,y,r);
        if(z==1) right(x,y,r);
        for(int i=0;i<n;i++){
            for(int j=0;j<n;j++) cout<<nums[i][j]<<" ";     //for debug
            cout<<endl;
        }
        cout<<endl<<endl;                                   //for debug
    }
    for(int i=0;i<n;i++){
        for(int j=0;j<n;j++) cout<<nums[i][j]<<" ";
        cout<<endl;
    }
    return 0;
}
2022/8/19 21:16
加载中...