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

  • 相关阅读:
    Python基础入门篇【36】-python初识异常及常见的异常类型
    Spark部署模式与作业提交
    PB对象命名规范
    mysql 逻辑备份 恢复数据
    std::thread简单使用
    【Vue-Element-Admin】table排序
    shell脚本之sed命令
    七大排序之插入排序
    【软件测试】身为测试人,经常背锅的我该咋办?
    Spark 面试题(十六)
  • 原文地址:https://blog.csdn.net/m0_74821245/article/details/128174373