求助,第一篇题解的旋转过程是怎么回事
查看原帖
求助,第一篇题解的旋转过程是怎么回事
534582
lin_ac楼主2021/12/7 22:41

我根据第一篇题解写到ac代码,下面是旋转部分的代码,但是不能理解为什么坐标是x+y,x-y

void raotate_c(int x,int y,int r){ //第i行第j个 变成倒数第i列第j个 顺时针 
    int n=x+r,m=y+r;
    for(int i=x-r;i<=x+r;i++){
        for(int j=y-r;j<=y+r;j++){
            tmp[x-y+j][x+y-i]=arr[i][j];     //不理解的部分
        }
    }
    for(int i=x-r;i<=x+r;i++){  //把临时数组重新赋给原数组
        for(int j=y-r;j<=y+r;j++){
            arr[i][j]=tmp[i][j];
        }
    }
}

void raotate_r(int x,int y,int r){  //第i行第j个 变成第i列倒数第j个 逆时针 
    int n=x+r,m=y+r;
    for(int i=x-r;i<=x+r;i++){
        for(int j=y-r;j<=y+r;j++){
            tmp[x+y-j][y-x+i]=arr[i][j];    //不理解的部分
        }
    }
    for(int i=x-r;i<=x+r;i++){      //把临时数组重新赋给原数组
        for(int j=y-r;j<=y+r;j++){
            arr[i][j]=tmp[i][j];
        }
    }
}


2021/12/7 22:41
加载中...