洛谷 P4924 [1007] 魔法少女小Scarlet

题解:

cpp 复制代码
#include<iostream>
#include<vector>
int main(){
    int n,m,count=0;
    std::cin>>n>>m;
    std::vector<std::vector<int>> a(n,std::vector<int>(n,0));
    for(std::vector<std::vector<int>>::iterator row=a.begin();row!=a.end();++row){
        for(std::vector<int>::iterator col=row->begin();col!=row->end();++col){
            *col=++count;
        }
    }
    std::vector<std::vector<int>> b=a;
    //旋转公式用数学坐标推导即可,假设待旋转点为x0,y0,中心点为x,y,即可推导旋转之后的坐标通式
    for(int i=0;i!=m;++i){
        int x,y,r,z;
        std::cin>>x>>y>>r>>z;
        for(int j=x-1-r;j<=x-1+r;++j){
            for(int k=y-1-r;k<=y-1+r;++k){
                if(z==0) b[k-y+x][x+y-2-j]=a[j][k];
                else b[y+x-k-2][j-x+y]=a[j][k];
            }
        }
        a=b;
    }
    for(std::vector<std::vector<int>>::iterator row=b.begin();row!=b.end();++row){
        for(std::vector<int>::iterator col=row->begin();col!=row->end();++col){
            std::cout<<*col<<" ";
        }
        std::cout<<std::endl;
    }
    return 0;
}

结果:

相关推荐
卷无止境1 天前
C++ 的Eigen 库全解析
c++
卷无止境1 天前
现代 C++特性大盘点:一门脱胎换骨的老语言
c++·后端
郝学胜_神的一滴1 天前
CMake 27:缓存变量的特性、语法、类型与实操全解
c++·cmake
博客18003 天前
酷宝的使用方法,超好用的免费界面库,C++、MFC可用
c++·mfc·界面库·库来帮·酷宝
郝学胜_神的一滴3 天前
CMake 026:属性体系精讲、四大作用域全解 & 实战代码落地
c++·cmake
众少成多积小致巨4 天前
JNI (Java Native Interface) 技术手册中文参考指南
android·java·c++
clint4568 天前
C++进阶(1)——前景提要
c++
夜悊8 天前
C++代码示例:进制数简单生成工具
c++
郝学胜_神的一滴8 天前
CMake 021: IF 条件判据详诠
c++·cmake
_wyt0019 天前
洛谷 B3930 [GESP202312 五级] 烹饪问题 题解
c++·gesp