LeetCode Rotate Image

来源:互联网 发布:js原生判断display 编辑:程序博客网 时间:2024/06/18 10:58

没什么东西,就是麻烦,容易出错,对于每个点找其旋转后的位置,然后一个一个替换,一层套一层的。

// LeetCode_RotateImage.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include <iostream>#include <vector>using namespace std;void getlastij(int leftup,int rightdown,int i,int j,int &lasti,int &lastj){//length is rightdown - leftup + 1lasti = i;lastj = j;int sum = rightdown - leftup;if (i==leftup){while(sum>0&&lastj>=leftup&&lastj<=rightdown){sum--;lastj--;}if (sum>0||(sum==0&&lastj<leftup)){lastj++;sum++;while(sum>0&&lasti>=leftup&&lasti<=rightdown){sum--;lasti++;}}return ;}if (i==rightdown){while(sum>0&&lastj>=leftup&&lastj<=rightdown){sum--;lastj++;}if (sum>0||(sum==0&&lastj>rightdown)){lastj--;sum++;while(sum>0&&lasti>=leftup&&lasti<=rightdown){sum--;lasti--;}}return ;}if (j==leftup){while(sum>0&&lasti>=leftup&&lasti<=rightdown){sum--;lasti++;}if (sum>0||(sum==0&&lasti>rightdown)){lasti--;sum++;while(sum>0&&lastj>=leftup&&lastj<=rightdown){sum--;lastj++;}}return ;}if (j==rightdown){while(sum>0&&lasti>=leftup&&lasti<=rightdown){sum--;lasti--;}if (sum>0||(sum==0&&lasti<leftup)){lasti++;sum++;while(sum>0&&lastj>=leftup&&lastj<=rightdown){sum--;lastj--;}}return ;}}void rotate(vector<vector<int> > &matrix) {int n = matrix.size();for (int step = n,leftup=0;step>1;step-=2,leftup++){int rightdown = leftup + step-1;for (int i=leftup;i<rightdown;i++){int lasti,lastj;int curi = leftup,curj = i;int temp = matrix[curi][curj];for (int k=1;k<=3;k++){getlastij(leftup,rightdown,curi,curj,lasti,lastj);matrix[curi][curj] = matrix[lasti][lastj];curi = lasti;curj = lastj;}matrix[curi][curj] = temp;}}}int _tmain(int argc, _TCHAR* argv[]){vector<vector<int> > matrix;vector<int> onevalue;int n;while(cin>>n){matrix.clear();for (int i=0;i<n*n;i+=n){onevalue.clear();for (int j=1;j<=n;j++){onevalue.push_back(i+j);}matrix.push_back(onevalue);}for (int i=0;i<n;i++){for (int j=0;j<n;j++){cout<<matrix[i][j]<<" ";}cout<<endl;}rotate(matrix);for (int i=0;i<n;i++){for (int j=0;j<n;j++){cout<<matrix[i][j]<<" ";}cout<<endl;}}system("pause");return 0;}


0 0
原创粉丝点击