c++ O(n)级算法

just 发表于 3个月前 · 关联问题 Matrix

include

include

using namespace std; void shun(vector<vector>& k, vector<vector> temp , int N) {

for (int i = 0; i < N; i++) { for (int j = 0; j < N; j++) { k[i][j] = temp[N - 1 - j][i]; } }

} void ni (vector<vector>& k, vector<vector> temp, int N) {

for (int i = 0; i < N; i++) { for (int j = 0; j < N; j++) { k[i][j] = temp[j][N - 1 - i]; } }

} void zhong (vector<vector>& k, vector<vector> temp, int N) {

shun(k, temp, N); temp = k; shun(k, temp, N);

} void print(vector<vector>& k, int N) {

for (int i = 0; i < N; i++) { for (int j = 0; j < N; j++) { cout << k[i][j] << " "; } cout << endl; }

} int main() {

int N, M; cin >> N>>M; vector<vector<int>> k(N);//预留N个空间 for (int i = 0; i < N; i++) { k[i].resize(N); //预留N个空间 for (int j = 0; j < N; j++) { int num; cin >> num; k[i][j]=num; } } for (int i = 0; i < M; i++) { int type; cin >> type; vector<vector<int>> temp = k; switch (type) { case 1: shun(k, temp,N); break; case 2: ni(k, temp,N); break; case 3: zhong(k, temp,N); break; } print(k, N); if (i < M - 1) { cout << endl; } } system("pause"); return 0;

}