From 2d11592fd348df4ab9e38265b9a6f75af6cca98f Mon Sep 17 00:00:00 2001 From: hit_lu Date: Tue, 26 Aug 2025 10:17:18 +0800 Subject: [PATCH] =?UTF-8?q?=E7=BC=96=E7=A0=81=E6=96=B9=E5=BC=8F=E4=BF=AE?= =?UTF-8?q?=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/solver.cpp | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/solver.cpp b/src/solver.cpp index 3f80d54..e169d77 100644 --- a/src/solver.cpp +++ b/src/solver.cpp @@ -39,7 +39,7 @@ LinSolver::LinSolver() : sv::LinSolver::~LinSolver() { for (auto& var : vars) { - delete[] var.second; // 释放原有内存 + delete[] var.second; } } @@ -54,12 +54,12 @@ LinSolver& sv::LinSolver::operator=(const LinSolver& solver) return *this; } for (auto& var : vars) { - delete[] var.second; // 释放原有内存 + delete[] var.second; } vars.clear(); vars.reserve(solver.vars.size()); for (auto& var : solver.vars) { - vars.push_back(std::pair(var.first, new Var[var.first])); + vars.push_back(std::make_pair(var.first, new Var[var.first])); for (int i = 0; i < var.first; i++) { vars.back().second[i] = var.second[i]; } @@ -81,14 +81,14 @@ Var* LinSolver::addVars(int num, VarType type) for (int c = 0; c < num; c++) { var[c].col = c + cn, var[c].type = type; } - vars.push_back(std::pair(num, var)); + vars.push_back(std::make_pair(num, var)); cn += num; return vars.back().second; } Var& sv::LinSolver::getVar(int idx) { - assert(idx >= 0 && idx < cn); // 添加越界检查 + assert(idx >= 0 && idx < cn); static Var err_var; for (auto& var : vars) { if (var.first <= idx) { @@ -382,7 +382,7 @@ rtn LinSolver::feasible_solution() rtn LinSolver::_pivot(pair& p) { p = make_pair(0, 0); - double cmin = INT_MAX; + double cmin = DBL_MAX; vector coef = ope_table.front(); // === 非主轴元素中找最小值 === @@ -395,7 +395,7 @@ rtn LinSolver::_pivot(pair& p) if (cmin >= 0) { return OPTIMAL; } - double bmin = INT_MAX; + double bmin = DBL_MAX; for (size_t row = 1; row < bn; row++) { double tmp = ope_table.at(row).front() / ope_table.at(row).at(p.second); if (ope_table.at(row).at(p.second) > 0 && bmin > tmp) { @@ -404,7 +404,7 @@ rtn LinSolver::_pivot(pair& p) } } - if (abs(bmin - INT_MAX) < 1e-10) { + if (abs(bmin - DBL_MAX) < 1e-10) { return UNBOUNDED; }