Есть шаблон класса для матрицы, где двумерная матрица реализована как одномерная:
template <class T> class matrix
{
private:
size_t Height;
size_t Width;
T *Val;
public:
T& operator () (size_t i, size_t j)
{
return Val[Width*(i-1)+j-1];
}
........
}
double *A3 = new double [n*n];
A3[n*(i-1)+j-1]