• [1007]魔法少女小Scarlet


    #include
    #include<iomanip>
    #include<cstring>
    #include<sstream>
    #include
    using namespace std;
    void fold(int x,int y,int r,int**a){//进行对折操作
        int R=r/2;
        int p=0;
        int b;
        for(int i=x-R;i         for(int j=y-R;j<=y+R;j++){
                p=2*x-i;
                b=a[p][j];
                a[p][j]=a[i][j];
                a[i][j]=b;
            }
        }
    }
    void revolve_shun(int x,int y,int r,int**a){//顺时针
        int sum=0;
        int R=r/2;
        sum=x+y;
        int p,q;
        int b;
        for(int i=x-R;i<=x+R;i++){
            for(int j=y-R;j<=y+R;j++){
                if((i+j)>=sum){
                    break;
                }
                if((i+j)                 p=x+(y-j);
                    q=y+(x-i);
                    b=a[p][q];
                    a[p][q]=a[i][j];
                    a[i][j]=b;
                }
                
            }
        }
    }
    void revolve_ni(int x,int y,int r,int**a){//逆时针
        int sum=0;
        int R=r/2;
        sum=y-x;
        int p,q;
        int b;
        for(int i=x+R;i>=x-R;i--){
            for(int j=y+R;j>=y-R;j--){
                if((j-i)<=sum){
                    break;
                }
                if((j-i)>sum){
                    p=x-(y-j);
                    q=y-(x-i);
                    b=a[p][q];
                    a[p][q]=a[i][j];
                    a[i][j]=b;
                }

            }
        }
    }
    int main(){
        int n,m;
        cin>>n>>m;
        int **a;
        a=new int*[n];
        for(int i=0;i         a[i]=new int[n];
        }
        int t=1;
        for(int i=0;i         for(int j=0;j             a[i][j]=t;
                t++;
            }
        }
        while(m>0){
            int x,y,r,z;
            cin>>x>>y>>r>>z;
            x--;
            y--;
            r=2*r+1;
            if(z==0){
                revolve_shun(x,y,r,a);
            }else{
                revolve_ni(x,y,r,a);
            }
            fold(x,y,r,a);
            m--;
        }
        for(int i=0;i         for(int j=0;j             cout<         }
            cout<     }
        system("pause");
        return 0;
    }
     

  • 相关阅读:
    EdgeX Foundry 架构介绍
    ESP8266-Arduino编程实例-ADS1115模数转换器驱动
    Spark【Spark SQL(四)UDF函数和UDAF函数】
    第四章 将对象映射到 XML - 异常
    修改了Excel默认打开方式后仍然使用WPS打开的解决办法
    【无公网IP内网穿透】Java支付宝沙箱环境支付,SDK接口远程调试
    频谱和功率谱的区别与联系
    Linux开发——Ubuntu 下文本编辑(三)
    天堂2服务器基本设置
    老梗新玩「GitHub 热点速览 v.22.34」
  • 原文地址:https://blog.csdn.net/m0_74821245/article/details/128174373