matrix_resolve.h
#ifndef _MATRIX_RESOLVE_H_
#define _MATRIX_RESOLVE_H_
#include <string.h>
#include "matrix.h"
#include "resolve.h"
struct meta_resolve
{
unsigned int evaluation_value;
std::string solution;
unsigned int m_row;
unsigned int m_col;
math_use::matrix<float> m_matrix;
friend std::ostream& operator << (std::ostream &of, const struct meta_resolve& m_meta) {
of << "<" << m_meta.evaluation_value << "," << m_meta.solution << "," << m_meta.m_row << "," << m_meta.m_col << ">" << std::endl;
return of;
}
friend struct meta_resolve operator * (const struct meta_resolve& _lhs, const struct meta_resolve& _rhs)
{
struct meta_resolve m_meta_matrix(_lhs);
m_meta_matrix.evaluation_value = _lhs.evaluation_value + _rhs.evaluation_value + _lhs.m_row * _rhs.m_row * _rhs.m_col;
m_meta_matrix.solution = "(" + _lhs.solution + "," + _rhs.solution + ")";
m_meta_matrix.m_row = _lhs.m_row;
m_meta_matrix.m_col = _rhs.m_col;
m_meta_matrix.m_matrix = _lhs.m_matrix * _rhs.m_matrix;
return m_meta_matrix;
}
friend struct meta_resolve& operator *= (struct meta_resolve& _lhs, const struct meta_resolve& _rhs)
{
struct meta_resolve m_result(_lhs);
_lhs = m_result * _rhs;
return _lhs;
}
};
class matrix_resolve : public Resolve
{
private:
math_use::matrix<struct meta_resolve > m_dp_result;
private:
void string_analysis();
void dp_alogorithm();
void continue_multiply();
public:
matrix_resolve() {
}
virtual ~matrix_resolve() {
}
virtual void read_para();
virtual void print();
virtual void fun();
};
void *thread_matrix_multi_use(void *m_comm);
#endif
matrix_resolve.cpp
#include <iostream>