文章

28

粉丝

226

获赞

51

访问

131.5k

头像
O(n^2),知道怎么旋转90°就全都会了(180°就是两次90°)
Sacan SVIP
P1377 北京航空航天大学机试题
发布于2022年6月3日 15:31
阅读数 5.2k

1. 旋转90°:

b[j][n-1-i] = a[i][j];    // a是原数组,b是旋转后的

原数组的第i行旋转90°后就是第n-1-i列;

原数组的第j列旋转90°后就是第i行;

2.180、270:

180 = 90 + 90

270 = 90 + 90 + 90

 

#include <iostream>
#include <vector>
using namespace std;

bool check(vector<vector<int>>& a, vector<vector<int>>& b){
    int n = a.size();
    for(int i = 0;i < n;i++){
        for(int j = 0;j < n;j++){
            if(a[i][j] != b[i][j]){
                return false;
            }
        }
    }
    return true;
}

vector<vector<int>> tran_90(vector<vector<int>>& a){
    int n = a.size();
    vector<vector<int>> b(n, vector<int> (n));
    for(int i = 0;i < n;i++){
        for(int j = 0;j < n;j++){
            b[j][n-1-i] = a[i][j];
        }
    }
    return b;
}


int main()
{
    int n;
    while(cin >> n){
        if(n == 0){
            cout &l...
登录查看完整内容


登录后发布评论

暂无评论,来抢沙发