曾彪彪的个人网站
首页
文章列表
>>
文章详情
矩阵旋转的3中方法
作者:
曾彪彪
日期:
2025-06-16 01:43:04
阅读(13)
分类:
Algorithm
矩阵旋转有3中方法,如下: ```c++ #include <bits/stdc++.h> using namespace std; int m, n; queue<int> q; void printSquare(vector<vector<int>> s) { for (int i = 0; i < s.size(); i++) { for (int j = 0; j < s.size(); j++) { cout << setw(2) << s[i][j] << " "; } cout << endl; } } void rotate(vector<vector<int>> &s) { int n = s.size(); for (int i = 0; i < s.size() / 2; i++) { for (int j = i; j < n - 1 - i; j++) { int t = s[i][j]; s[i][j] = s[n - 1 - j][i]; s[n - 1 - j][i] = s[n - 1 - i][n - 1 - j]; s[n - 1 - i][n - 1 - j] = s[j][n - 1 - i]; s[j][n - 1 - i] = t; } } } void rotate2(vector<vector<int>> &s) { int n = s.size(); for (int i = 0; i < n; i++) { for (int j = 0; j < i; j++) { swap(s[i][j], s[j][i]); } } for (int i = 0; i < n; i++) { for (int j = 0; j < n / 2; j++) { swap(s[i][j], s[i][n - 1 - j]); } } } void rotate3(vector<vector<int>> &s) { int n = s.size(); if (n == 0) { return; } vector<vector<int>> temp(n, vector<int>(n)); for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { temp[j][n - 1 - i] = s[i][j]; } } s = temp; } int main() { int n; cin >> n; vector<vector<int>> s(n, vector<int>(n)); cout << setfill(' '); int c = 1; for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { s[i][j] = c++; } } printSquare(s); cout << "---------------" << endl; // rotate(s); // printSquare(s); // cout << "---------------" << endl; // rotate2(s); // printSquare(s); // cout << "---------------" << endl; rotate3(s); printSquare(s); cout << "---------------" << endl; return 0; } ```
评论(0)
评论(必填)
名称(必填)
联系方式(可选)
验证码(必填)
提交
评论(必填)
名称(必填)
联系方式(可选)
验证码(必填)