第一次题目没看清,以为是给定一个矩形,求最小的变换路线,我想SEC1和2原来差距如此之大啊。。。
后来仔细一看,只要变一次,这个题目就编程弱智题了。
我比较懒,没有一个一个旋转去写,而是实现了1个顺时针九十度和一个镜像。
顺时针90度,数组下标变换策略:目标矩阵(j,N-i-1) <-- 原矩阵(i,j) ,其中N为矩阵的宽度
垂直镜像:目标矩阵(i,j) <-- 原矩阵(i,N-j-1) ,其中N为矩阵的宽度
知道这些代码就非常好写
View Code
1 #include2 #include 3 #include 4 #include 5 #include 6 7 using namespace std; 8 9 10 template 11 void rotate90(vector > &src,vector > &dest){ 12 int N=src.size(); 13 for(T i=0;i 19 void rotate180(vector > &src,vector > &dest){ 20 int N=src.size();vector > buf(N,vector (N,0)); 21 rotate90(src,buf); 22 rotate90(buf,dest); 23 } 24 25 template 26 void rotate270(vector > &src,vector > &dest){ 27 int N=src.size();vector > buf(N,vector (N,0)); 28 rotate180(src,buf); 29 rotate90(buf,dest); 30 } 31 32 template 33 void reflect(vector > &src,vector > &dest){ 34 int N=src.size(); 35 for(T i=0;i 41 void reflect_rotate90(vector > &src,vector > &dest){ 42 int N=src.size();vector > buf(N,vector (N,0)); 43 reflect(src,buf); 44 rotate90(buf,dest); 45 } 46 47 template 48 void reflect_rotate180(vector > &src,vector > &dest){ 49 int N=src.size();vector > buf(N,vector (N,0)); 50 reflect(src,buf); 51 rotate180(buf,dest); 52 } 53 54 template 55 void reflect_rotate270(vector > &src,vector > &dest){ 56 int N=src.size();vector > buf(N,vector (N,0)); 57 reflect(src,buf); 58 rotate270(buf,dest); 59 } 60 61 62 63 template 64 void read_matrix(ifstream& is, vector > &dest){ 65 int N=dest.size(); 66 char temp=0; 67 for(int i=0;i >temp; 70 dest[i][j]=temp; 71 } 72 } 73 } 74 75 template 76 void pm(vector > &matrix){ 77 cout<<"--------------"< 86 bool equal(vector > &src,vector > &dest){ 87 for(int i=0;i >length; 101 102 vector > base(length,vector (length,0)); 103 vector > buf(length,vector (length,0)); 104 vector > dest(length,vector (length,0)); 105 read_matrix(fin,base); 106 read_matrix(fin,dest); 107 108 /* 109 pm(base); 110 pm(dest); 111 112 113 rotate90(base,buf); 114 pm(buf); 115 rotate180(base,buf); 116 pm(buf); 117 rotate270(base,buf); 118 pm(buf); 119 */ 120 121 122 rotate90(base,buf); 123 if(equal(buf,dest)){ 124 fout<<1< >src[i][j]; 180 } 181 } 182 */ 183 //read_matrix(fin,src); 184 185 186 /* 187 188 char abc[][3] = { 189 '1','2','3', 190 '4','5','6', 191 '7','8','9' 192 }; 193 194 195 char buf[3][3]; 196 197 pmatrix(abc); 198 rotate90(abc,buf); 199 pmatrix(buf); 200 rotate180(abc,buf); 201 pmatrix(buf); 202 rotate270(abc,buf); 203 pmatrix(buf); 204 reflect(abc,buf); 205 pmatrix(buf); 206 reflect_rotate90(abc,buf); 207 pmatrix(buf); 208 reflect_rotate180(abc,buf); 209 pmatrix(buf); 210 reflect_rotate270(abc,buf); 211 pmatrix(buf); 212 213 */ 214 215 end: 216 217 fin.close(); 218 fout.close(); 219 return 0; 220 }