• [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;
    }
     

  • 相关阅读:
    2022最新Java高频面试集锦,让你“金九银十”轻松斩获大厂offer
    驱动开发 DAY1 外部传参Makefile编写
    RequestMappingHandlerMapping类的简介说明
    批量执行redis命令总结
    鸿蒙开发实例 | 鸿蒙原子化服务卡片开发完美体验
    【Redis】使用 Java 客户端连接 Redis
    智慧公厕建设的好处
    D-star Lite算法及相关思考
    Android跨进程通信,IPC,RPC,Binder系统,C语言应用层调用
    CentOS系统下,配制nginx访问favicon.ico
  • 原文地址:https://blog.csdn.net/m0_74821245/article/details/128174373