[Error] ld returned 1 exit status
闲着没事瞎写了一个矩阵类,然后还写挂了,CE。
#include<bits/stdc++.h>
using namespace std;
int N;
template<class Type, int size_n, int size_m>
class matrix{
public:
static int n, m;
Type val[size_n + 3][size_m + 3];
matrix(){
n = size_n, m = size_m;
}
void resize(int N, int M){
this->n = N;
this->m = M;
}
friend istream& operator >> (istream &ist, matrix &x){
for (int i = 1; i <= n; i++)
for (int j = 1; j <= m; j++)
ist >> x.val[i][j];
return ist;
}
friend ostream& operator << (ostream &ost, matrix x){
for (int i = 1; i <= n; i++){
for (int j = 1; j <= m; j++)
ost << x.val[i][j] << " ";
ost << "\n";
}
return ost;
}
matrix operator = (matrix b){
n = b.n;
m = b.m;
for (int i = 1; i <= n; i++)
for (int j = 1; j <= m; j++)
this->val[i][j] = b.val[i][j];
return *this;
}
matrix operator + (matrix b){
for (int i = 1; i <= n; i++)
for (int j = 1; j <= m; j++)
b.val[i][j] += this->val[i][j];
return b;
}
matrix operator - (matrix b){
for (int i = 1; i <= n; i++)
for (int j = 1; j <= m; j++)
b.val[i][j] -= this->val[i][j];
return b;
}
matrix operator * (matrix b){
matrix tmp = b;
for (int i = 1; i <= n; i++)
for (int j = 1; j <= b.m; j++)
for (int k = 1; k <= m; k++)
tmp.val[i][j] += tmp.val[i][k] * tmp.val[k][j];
return tmp;
}
matrix zig(){
matrix tmp;
for (int i = 1; i <= n; i++)
for (int j = 1; j <= m; j++)
tmp.val[m - j + 1][i] = this->val[i][j];
tmp.n = m, tmp.m = n;
return tmp;
}
matrix flip_ud(){
matrix tmp;
for (int i = 1; i <= n; i++)
for (int j = 1; j <= m; j++)
tmp.val[n - i + 1][j] = this->val[i][j];
tmp.n = n, tmp.m = m;
return tmp;
}
matrix flip_lr(){
matrix tmp;
for (int i = 1; i <= n; i++)
for (int j = 1; j <= m; j++)
tmp.val[i][m - j + 1] = this->val[i][j];
tmp.n = n, tmp.m = m;
return tmp;
}
bool operator == (matrix b){
for (int i = 1; i <= n; i++)
for (int j = 1; j <= m; j++)
if (this->val[i][j] != b.val[i][j])
return 0;
return 1;
}
};
matrix<char, 105, 105> a, b, tmp;
int main(){
ios::sync_with_stdio(false);
cin.tie(0);cout.tie(0);
cin >> N >> a >> b;
a.resize(N, N);
b.resize(N, N);
if (a.zig() == b)
cout << 3;
else if (a.zig().zig() == b)
cout << 2;
else if (a.zig().zig().zig() == b)
cout << 1;
else if (a == b)
cout << 6;
else if (a.flip_lr() == b)
cout << 4;
else{
tmp = a.flip_lr();
for (int i = 1; i <= 3; i++){
tmp = tmp.zig();
if (tmp == b){
cout << 5;
return 0;
}
}
cout << 7;
}
return 0;
}