欢迎您访问365答案网,请分享给你的朋友!
生活常识 学习资料

P4924[1007]魔法少女小Scarlet(C++)

时间:2023-06-01

#include#include#include #include#include#includeusing namespace std;int A[1000][1000] = {0};//用来存放生成的矩阵int temp[1000][1000] = { 0 };//临时数组struct rule {int x;int y;int r;int z;};int main(){int n, m;//矩阵维度,条件个数cin >> n >> m;rule a[1000];//条件的结构体for (int i = 1; i <= m; i++){cin >> a[i].x >> a[i].y >> a[i].r >> a[i].z;}int k = 1;for (int j = 1; j <= n; j++)//矩阵初始化{for (int i = 1; i <= n; i++){A[j][i] = k;k++;}}for (int b = 1; b <= m; b++){if (a[b].z == 0)//顺时针{//难想的点就是旋转矩阵,其实是有规律的,观察旋转前后的图像寻找规律for (int i = a[b].x - a[b].r; i <= a[b].x + a[b].r; i++){for (int j = a[b].y - a[b].r; j <= a[b].y + a[b].r; j++){temp[i][j] = A[i][j];//放入到临时数组中}}int x2 = a[b].x - a[b].r; int y2 = a[b].y + a[b].r;for (int x1 = a[b].x - a[b].r; x1 <= a[b].x + a[b].r; x1++){for (int y1 = a[b].y - a[b].r; y1 <= a[b].y + a[b].r; y1++){A[x2][y2] = temp[x1][y1];x2++;}y2--;x2= a[b].x - a[b].r;}}else{for (int i1 = a[b].x - a[b].r; i1 <= a[b].x + a[b].r; i1++){for (int j1 = a[b].y - a[b].r; j1 <= a[b].y + a[b].r; j1++){temp[i1][j1] = A[i1][j1];//放入到临时数组中}}int x3 = a[b].x - a[b].r; int y3 = a[b].y - a[b].r;for (int y1 = a[b].y + a[b].r; y1 >= a[b].y - a[b].r; y1--){for (int x1 = a[b].x - a[b].r; x1 <= a[b].x + a[b].r; x1++){A[x3][y3] = temp[x1][y1];y3++;}x3++;y3 = a[b].y - a[b].r;}}}for (int p = 1; p <= n; p++)//矩阵初始化{for (int q = 1; q <= n; q++){cout << A[p][q]<<" ";}cout << endl;}return 0;}

Copyright © 2016-2020 www.365daan.com All Rights Reserved. 365答案网 版权所有 备案号:

部分内容来自互联网,版权归原作者所有,如有冒犯请联系我们,我们将在三个工作时内妥善处理。