1011 A+B 和 C(使用Int越界约束下完成)

这是一个Java编程题目,要求在给定的整数范围内判断三个整数A、B和C是否满足A+B大于C的条件。程序通过读取输入的测试用例,运用条件判断避免整数溢出问题,然后输出结果。示例输入和输出展示了不同情况下的判断结果。
package com.heu.wsq.pta.a1011;

import java.util.Scanner;

/**
 * 1011 A+B 和 C (15分)
 * @author wsq
 * @date 2020/12/5
 * 给定区间 [−2*31, 2*31]内的3个整数 A、B 和 C,请判断 A+B 是否大于 C。
 *
 * 输入格式:
 * 输入第 1 行给出正整数 T (≤10),是测试用例的个数。随后给出 T 组测试用例,每组占一行,顺序给出 A、B 和 C。整数间以空格分隔。
 *
 * 输出格式:
 * 对每组测试用例,在一行中输出 Case #X: true 如果 A+B>C,否则输出 Case #X: false,其中 X 是测试用例的编号(从 1 开始)。
 *
 * 输入样例:
 * 4
 * 1 2 3
 * 2 3 4
 * 2147483647 0 2147483646
 * 0 -2147483648 -2147483647
 *
 * 输出样例:
 * Case #1: false
 * Case #2: true
 * Case #3: true
 * Case #4: false
 */
public class Main {
    /**
     * 网上看了很多人都是使用long long 或者 Double去解决数组越界的问题,这种方式简单,但是没去真正去理解只能去在越界的条件下去完成任务
     * @param args
     */
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int n = in.nextInt();
        for (int i = 0; i < n; i++) {
            int[] arr = new int[3];
            for (int j = 0; j < 3; j++) {
                arr[j] = in.nextInt();
            }
            if(arr[0] > 0 && arr[1] > 0 && Integer.MAX_VALUE - arr[0] < arr[1]){
                System.out.println("Case #"+ (i+1) +": " + "true");
                continue;
            }
            if(arr[0] < 0 && arr[1] < 0 && Integer.MIN_VALUE - arr[0] > arr[1]){
                System.out.println("Case #"+ (i+1) +": " + "false");
                continue;
            }
            if(arr[0] + arr[1] > arr[2]){
                System.out.println("Case #"+ (i+1) +": " + "true");
            }else{
                System.out.println("Case #"+ (i+1) +": " + "false");
            }
        }
    }
}

#include<iostream> #include<vector> #include<string> using namespace std; void chushihua(int r,int c,vector<string> &result,vector< vector<int> > &newresult,vector<vector<int> > &noplace){ for(int i=0;i<r*c;i++){ if(result[0][i]=='X'){ newresult[i/c][i%c]=7; noplace[i/c][i%c]=1; } else if(result[0][i]=='0'){ newresult[i/c][i%c]=0; noplace[i/c][i%c]=1; } else if(result[0][i]=='1'){ newresult[i/c][i%c]=1; noplace[i/c][i%c]=1; } else if(result[0][i]=='2'){ newresult[i/c][i%c]=2; noplace[i/c][i%c]=1; } else if(result[0][i]=='3'){ newresult[i/c][i%c]=3; noplace[i/c][i%c]=1; } else if(result[0][i]=='4'){ newresult[i/c][i%c]=4; noplace[i/c][i%c]=1; } else{ newresult[i/c][i%c]=6; noplace[i/c][i%c]=0; } } } // 放置灯的函数(4方向,光线遇到墙壁 7 或数字 0~4 停止) void placeLight(int r, int c, vector<vector<int> >& newresult, vector<vector<int> >& noplace) { int rows = newresult.size(); if (rows == 0) return; int cols = newresult[0].size(); // 检查是否可以放灯:必须是空地 6,且当前允许放置(noplace == 0) if (r < 0 || r >= rows || c < 0 || c >= cols) return; if (newresult[r][c] != 6 || noplace[r][c] != 0) return; // 放置灯 newresult[r][c] = 5; // 5 代表灯 // 四个方向:上(-1,0)、下(1,0)、左(0,-1)、右(0,1) int dr[] = {-1, 1, 0, 0}; int dc[] = {0, 0, -1, 1}; for (int d = 0; d < 4; ++d) { int dir_r = dr[d]; int dir_c = dc[d]; int nr = r + dir_r; int nc = c + dir_c; while (true) { // 越界,停止 if (nr < 0 || nr >= rows || nc < 0 || nc >= cols) { break; } int cell = newresult[nr][nc]; // 遇到墙壁 7 或数字 0~4,光线停止 if (cell == 7 || (cell >= 0 && cell <= 4)) { break; } // 如果是可放置的空格 6,则在 noplace 中标记为不能放灯 if (cell == 6) { noplace[nr][nc] = 1; } // 沿当前方向继续前进 nr += dir_r; nc += dir_c; } } } // 获取 (r,c) 的上下左右 4 个邻居,存入 neighbors(每个元素是 pair<int,int>) void getNeighbors(int r, int c, int rows, int cols, vector<pair<int, int> >& neighbors) { int dr[] = {-1, 1, 0, 0}; // 上,下 int dc[] = {0, 0, -1, 1}; // 左,右 for (int d = 0; d < 4; d++) { int nr = r + dr[d]; int nc = c + dc[d]; if (nr >= 0 && nr < rows && nc >= 0 && nc < cols) { neighbors.push_back(make_pair(nr, nc)); } } } void canreason(int rows, int cols, vector<vector<int> >& newresult, vector<vector<int> >& noplace) { // ===== 规则 1:如果数字是 4,就往上下左右放灯(如果可放)===== for (int i = 0; i < rows; i++) { for (int j = 0; j < cols; j++) { if (newresult[i][j] == 4) { vector<pair<int, int> > neighbors; getNeighbors(i, j, rows, cols, neighbors); vector<pair<int, int> > available_spots; // 遍历 4 个邻居 for (int k = 0; k < neighbors.size(); k++) { pair<int, int> p = neighbors[k]; int nr = p.first; int nc = p.second; int val = newresult[nr][nc]; if (val == 6 && noplace[nr][nc] == 0 && val != 5 && val != 7) { available_spots.push_back(make_pair(nr, nc)); } } // 如果刚好有 4 个可放的空位,就都放灯 if (available_spots.size() == 4) { for (int k = 0; k < available_spots.size(); k++) { pair<int, int> p = available_spots[k]; int nr = p.first; int nc = p.second; placeLight(nr, nc, newresult, noplace); } } } } } // ===== 规则 2:如果数字是 0~3,且已放的灯数 == 数字,则放周围可放的空位 ===== for (int i = 0; i < rows; i++) { for (int j = 0; j < cols; j++) { int num = newresult[i][j]; if (num >= 0 && num <= 3) { vector<pair<int, int> > neighbors; getNeighbors(i, j, rows, cols, neighbors); int light_count = 0; vector<pair<int, int> > available_spots; for (int k = 0; k < neighbors.size(); k++) { pair<int, int> p = neighbors[k]; int nr = p.first; int nc = p.second; int val = newresult[nr][nc]; if (val == 5) { light_count++; } else if (val == 6 && noplace[nr][nc] == 0 && val != 5 && val != 7) { available_spots.push_back(make_pair(nr, nc)); } } if (light_count == num) { for (int k = 0; k < available_spots.size(); k++) { pair<int, int> p = available_spots[k]; int nr = p.first; int nc = p.second; placeLight(nr, nc, newresult, noplace); } } } } } // ===== 规则 3(可选):如果一个空位 6 周围没有灯,就放灯 ===== // 你可以后续加上 } // 检查是否游戏结束(noplace全为1,且所有数字满足灯数,且灯之间不冲突) bool ifEnd(int rows, int cols, vector<vector<int> >& newresult, vector<vector<int> >& noplace) { // ===== 第一步:检查 noplace 是否全为 1(即没有可放灯的空位了)===== for (int i = 0; i < rows; i++) { for (int j = 0; j < cols; j++) { if (noplace[i][j] == 0&&newresult[i][j]==6) { // 只要有一个格子还能放灯(noplace == 0),就不是结束状态 return false; } } } // ===== 第二步:检查每个数字(0~4)周围 4 方向的灯(5)的数量是否等于该数字 ===== for (int i = 0; i < rows; i++) { for (int j = 0; j < cols; j++) { int val = newresult[i][j]; if (val >= 0 && val <= 4) { // 是数字 int expected = val; // 期望的灯数量 int actual = 0; // 检查上下左右 4 个方向 int dr[] = {-1, 1, 0, 0}; int dc[] = {0, 0, -1, 1}; for (int d = 0; d < 4; d++) { int nr = i + dr[d]; int nc = j + dc[d]; if (nr >= 0 && nr < rows && nc >= 0 && nc < cols) { if (newresult[nr][nc] == 5) { // 是灯 actual++; } } } if (actual != expected) { return false; // 数字对应的灯数量不对 } } } } // ===== 第三步:检查任意两盏灯(5)之间不能无阻挡地看到对方(即不能相互照亮)===== for (int i = 0; i < rows; i++) { for (int j = 0; j < cols; j++) { if (newresult[i][j] == 5) { // 当前是灯 int dr[] = {-1, 1, 0, 0}; int dc[] = {0, 0, -1, 1}; for (int d = 0; d < 4; d++) { int nr = i + dr[d]; int nc = j + dc[d]; while (true) { if (nr < 0 || nr >= rows || nc < 0 || nc >= cols) { break; } int cell = newresult[nr][nc]; if (cell == 5) { // 另一盏灯 return false; // 两灯之间无阻挡,冲突! } if (cell == 7 || cell == 0 || cell == 1 || cell == 2 || cell == 3 || cell == 4) { // 遇到墙壁或数字,挡住了,不用继续 break; } // 如果是空位 6,继续往前检查 nr += dr[d]; nc += dc[d]; } } } } } // 所有条件都满足! return true; } void backtrack(int k,int r,int c,vector<vector<int> >& newresult, vector<vector<int> >& noplace) { if (k == r * c) { if (ifEnd(r, c, newresult, noplace)) { // ? ifEnd 返回 true 才是满足条件 cout << "? 找到一个合法解!" << endl; for (int i = 0; i < r; i++) { for (int j = 0; j < c; j++) { cout << newresult[i][j] << " "; } cout << endl; } return;// 如果你只想找一个解,可以在这里 return; } else { for (int i = 0; i < r; i++) { for (int j = 0; j < c; j++) { cout << newresult[i][j] << " "; } cout << endl; } cout << "? ? 遍历完所有格子,但没有找到满足条件的解。" << endl; } } else if(noplace[k/c][k%c]==1||newresult[k/c][k%c]==5){ backtrack(k+1,r,c,newresult,noplace); } else { vector<vector<int> >tmp1; vector<vector<int> >tmp2; tmp1=newresult; tmp2=noplace; placeLight(k/c,k%c,newresult,noplace); canreason(r, c,newresult,noplace); backtrack(k+1,r,c,newresult,noplace); newresult=tmp1; noplace=tmp2; noplace[k/c][k%c]=1; backtrack(k+1,r,c,newresult,noplace); } } int main(){ vector<string> result; int r,c; cin>>r>>c; string s; cin>>s; result.push_back(s); for(int j=0;j<result.size();j++){ printf("%s\n",result[j].c_str()); } vector<vector<int> > newresult(r,vector<int>(c)); vector<vector<int> > noplace(r,vector<int>(c)); chushihua(r,c,result,newresult,noplace); backtrack(0,r,c,newresult,noplace); return 0; }为什么没有回溯的结果,只是遍历完
10-22
package algorithm; import ilog.concert.*; import ilog.cplex.*; import components.Instance; import components.Solution; public class CplexSolver { private Instance currentInstance; private double objValue = 0; private long compTime = 0; public CplexSolver() throws Exception { } public Solution solve(Instance instance) throws Exception { this.currentInstance = instance; String pathLog = instance.getPathResult().replaceAll(".txt", ".log"); int NumberVans = currentInstance.getNumberVans(); int NumberRobots = currentInstance.getNumberRobots(); double M = 6000.0; // Big-M int NumberCustomers = currentInstance.getNumberCustomers(); double VanPayload = currentInstance.getVanPayload(); double RobotMaxRadius = currentInstance.getRobotMaxRadius(); try { //创建cplex环境模型 IloCplex cplex = new IloCplex(); cplex.setParam(IloCplex.Param.TimeLimit, 1800); //创建变量 IloIntVar[][][] x = new IloIntVar[NumberCustomers + 1][NumberCustomers + 1][NumberVans]; IloIntVar[][][][] y = new IloIntVar[NumberCustomers + 1][NumberCustomers + 1][NumberVans][NumberRobots]; IloNumVar[][][] p = new IloNumVar[NumberCustomers + 1][NumberCustomers + 1][NumberVans]; IloNumVar[] a = new IloNumVar[NumberCustomers + 1]; //到达时间 IloNumVar[] b = new IloNumVar[NumberCustomers + 1]; //离开时间 IloNumVar[] w = new IloNumVar[NumberCustomers + 1]; //等待时间 //初始变量 for (int i = 0; i <= NumberCustomers; i++) { if (i != 0) { a[i] = cplex.numVar(540, currentInstance.getCustomers(i).getDueTime(), "a[" + i + "]"); b[i] = cplex.numVar(currentInstance.getCustomers(i).getReadyTime(), currentInstance.getCustomers(i).getDueTime(), "b[" + i + "]"); w[i] = cplex.numVar(0.0, Double.MAX_VALUE, "w[" + i + "]"); } for (int j = 0; j <= NumberCustomers; j++) { for (int k = 0; k < NumberVans; k++) { x[i][j][k] = cplex.boolVar("x[" + i + "][" + j + "][" + k + "]"); p[i][j][k] = cplex.numVar(0.0, 1200.0, "p[" + i + "][" + j + "][" + k + "]"); if ((i != 0) && (j != 0)) { for (int d = 0; d < NumberRobots; d++) { y[i][j][k][d] = cplex.boolVar("y[" + i + "][" + j + "][" + k + "][" + d + "]"); } } } } } //1.目标函数 IloLinearNumExpr objExpr = cplex.linearNumExpr(); //货车行驶时间 for (int i = 0; i <= NumberCustomers; i++) { for (int j = 0; j <= NumberCustomers; j++) { for (int k = 0; k < NumberVans; k++) { objExpr.addTerm(currentInstance.getTravelingTimeVehicle(i, j), x[i][j][k]); } } } //服务时间跨度(离开-到达) for (int i = 1; i <= NumberCustomers; i++) { objExpr.addTerm(1.0, b[i]); objExpr.addTerm(-1.0, a[i]); objExpr.addTerm(1.0, w[i]); } cplex.addMinimize(objExpr); //约束条件 //2.每个客户都被车辆或机器人服务到一次 for (int j = 1; j <= NumberCustomers; j++) { IloLinearNumExpr expr = cplex.linearNumExpr(); //货车直接服务 for (int i = 0; i <= NumberCustomers; i++) { for (int k = 0; k < NumberVans; k++) { expr.addTerm(1.0, x[i][j][k]); } } //机器人服务 for (int i = 1; i <= NumberCustomers; i++) { for (int k = 0; k < NumberVans; k++) { for (int d = 0; d < NumberRobots; d++) { expr.addTerm(1.0, y[i][j][k][d]); } } } cplex.addEq(expr, 1.0, "c2_j=" + j); } //3.只有可机器人访问的客户才能被机器人服务 for (int j = 1; j <= NumberCustomers; j++) { IloLinearNumExpr expr = cplex.linearNumExpr(); for (int i = 1; i <= NumberCustomers; i++) { for (int k = 0; k < NumberVans; k++) { for (int d = 0; d < NumberRobots; d++) { expr.addTerm(1.0, y[i][j][k][d]); } } } cplex.addLe(expr, currentInstance.getCustomers(j).getRobotAccessible(), "c3_j=" + j); } //4.机器人访问必须基于货车停靠 for (int i = 1; i <= NumberCustomers; i++) { for (int k = 0; k < NumberVans; k++) { IloLinearNumExpr expr1 = cplex.linearNumExpr(); IloLinearNumExpr expr2 = cplex.linearNumExpr(); for (int j = 1; j <= NumberCustomers; j++) { for (int d = 0; d < NumberRobots; d++) { expr1.addTerm(1.0, y[i][j][k][d]); } } for (int j = 0; j <= NumberCustomers; j++) { expr2.addTerm(NumberRobots, x[j][i][k]); } cplex.addLe(expr1, expr2, "c4_i=" + i + "_k=" + k); } } //5.每个机器人最多访问一个客户 for (int i = 1; i <= NumberCustomers; i++) { for (int d = 0; d < NumberRobots; d++) { IloLinearNumExpr expr = cplex.linearNumExpr(); for (int j = 1; j <= NumberCustomers; j++) { for (int k = 0; k < NumberVans; k++) { expr.addTerm(1.0, y[i][j][k][d]); } } cplex.addLe(expr, 1.0, "c5_i=" + i + "_d=" + d); } } // 6.每辆货车最多从仓库出发一次 for (int k = 0; k < NumberVans; k++) { IloLinearNumExpr expr = cplex.linearNumExpr(); for (int j = 1; j <= NumberCustomers; j++) { expr.addTerm(1.0, x[0][j][k]); } cplex.addLe(expr, 1.0, "c6_k=" + k); } // 7.流量守恒 for (int j = 0; j <= NumberCustomers; j++) { for (int k = 0; k < NumberVans; k++) { IloLinearNumExpr expr1 = cplex.linearNumExpr(); IloLinearNumExpr expr2 = cplex.linearNumExpr(); for (int i = 0; i <= NumberCustomers; i++) { expr1.addTerm(1.0, x[i][j][k]); expr2.addTerm(1.0, x[j][i][k]); } cplex.addEq(expr1, expr2, "c7_j=" + j + "_k=" + k); } } // 8.载货量平衡 for (int j = 1; j <= NumberCustomers; j++) { IloLinearNumExpr expr1 = cplex.linearNumExpr(); IloLinearNumExpr expr2 = cplex.linearNumExpr(); for (int i = 0; i <= NumberCustomers; i++) { for (int k = 0; k < NumberVans; k++) { expr1.addTerm(1.0, p[i][j][k]); expr1.addTerm(-1.0, p[j][i][k]); expr2.addTerm(currentInstance.getCustomers(j).getDemand(), x[i][j][k]); } } for (int i = 1; i <= NumberCustomers; i++) { for (int k = 0; k < NumberVans; k++) { for (int d = 0; d < NumberRobots; d++) { expr2.addTerm(currentInstance.getCustomers(i).getDemand(), y[j][i][k][d]); } } } cplex.addEq(expr1, expr2, "c8_j=" + j); } // 9.载货量容量限制 for (int i = 1; i <= NumberCustomers; i++) { for (int j = 0; j <= NumberCustomers; j++) { for (int k = 0; k < NumberVans; k++) { IloLinearNumExpr expr = cplex.linearNumExpr(); expr.addTerm(1.0, p[i][j][k]); IloLinearNumExpr expr2 = cplex.linearNumExpr(); expr2.addTerm(VanPayload, x[i][j][k]); expr2.addTerm(-currentInstance.getCustomers(i).getDemand(), x[i][j][k]); for (int o = 1; o <= NumberCustomers; o++) { for (int d = 0; d < NumberRobots; d++) { IloLinearNumExpr exprLinear = cplex.linearNumExpr(); exprLinear.addTerm(VanPayload - currentInstance.getCustomers(i).getDemand(), x[i][j][k]); exprLinear.addTerm(-currentInstance.getCustomers(o).getDemand(), y[i][o][k][d]); exprLinear.addTerm(-M, x[i][j][k]); cplex.addLe(expr, exprLinear, "c9_linearized_i=" + i + "_j=" + j + "_k=" + k + "_o=" + o + "_d=" + d); } } } } } // 10-12.时间连续性约束 for (int i = 1; i <= NumberCustomers; i++) { for (int j = 1; j <= NumberCustomers; j++) { // Constraint (10) IloLinearNumExpr expr = cplex.linearNumExpr(); expr.addTerm(1.0, b[i]); expr.addTerm(-1.0, a[j]); expr.addTerm(1.0, w[i]); expr.add(currentInstance.getTravelingTimeVehicle(i, j)); IloLinearNumExpr expr2 = cplex.linearNumExpr(); expr2.add(M); for (int k = 0; k < NumberVans; k++) { expr2.addTerm(-M, x[i][j][k]); } cplex.addLe(expr, expr2, "c10_i=" + i + "_j=" + j); // Constraint (11) expr = cplex.linearNumExpr(); expr.addTerm(-1.0, b[i]); expr.addTerm(1.0, a[j]); expr.addTerm(-1.0, w[i]); expr.add(-currentInstance.getTravelingTimeVehicle(i, j)); expr2 = cplex.linearNumExpr(); expr2.add(M); for (int k = 0; k < NumberVans; k++) { expr2.addTerm(-M, x[i][j][k]); } cplex.addLe(expr, expr2, "c11_i=" + i + "_j=" + j); // Constraint (12) expr = cplex.linearNumExpr(); expr.addTerm(1.0, a[i]); expr.addTerm(-1.0, a[j]); expr.add(currentInstance.getTravelingTimeRobot(i, j)); expr2 = cplex.linearNumExpr(); expr2.add(M); for (int k = 0; k < NumberVans; k++) { for (int d = 0; d < NumberRobots; d++) { expr2.addTerm(-M, y[i][j][k][d]); } } cplex.addLe(expr, expr2, "c12_i=" + i + "_j=" + j); } } // 13.服务时间约束 for (int i = 1; i <= NumberCustomers; i++) { IloLinearNumExpr expr = cplex.linearNumExpr(); expr.addTerm(1.0, w[i]); IloLinearNumExpr expr2 = cplex.linearNumExpr(); for (int j = 0; j <= NumberCustomers; j++) { for (int k = 0; k < NumberVans; k++) { expr2.addTerm(currentInstance.getCustomers(i).getServiceTimeVehicle(), x[j][i][k]); } } cplex.addGe(expr, expr2, "c13_i=" + i); } // 14.机器人返回时间约束 for (int i = 1; i <= NumberCustomers; i++) { for (int j = 1; j <= NumberCustomers; j++) { IloLinearNumExpr expr = cplex.linearNumExpr(); expr.addTerm(1.0, b[j]); expr.addTerm(-1.0, b[i]); expr.add(currentInstance.getTravelingTimeRobot(j, i)); //添加机器人行驶时间 expr.add(currentInstance.getCustomers(j).getServiceTimeRobot()); //添加机器人服务时间(常数) expr.addTerm(-1.0, w[i]); IloLinearNumExpr expr2 = cplex.linearNumExpr(); expr2.add(M); for (int k = 0; k < NumberVans; k++) { for (int d = 0; d < NumberRobots; d++) { expr2.addTerm(-M, y[i][j][k][d]); } } cplex.addLe(expr, expr2, "c14_i=" + i + "_j=" + j); } } // 15.时间窗边界约束: a_i <= b_i for (int i = 1; i <= NumberCustomers; i++) { cplex.addLe(a[i], b[i], "c15_i=" + i); } // 16.时间窗边界约束: u_i<=b_i<=l_i for (int i = 1; i <= NumberCustomers; i++) { cplex.addLe(b[i], currentInstance.getCustomers(i).getDueTime(), "c16_1_i=" + i); cplex.addGe(b[i], currentInstance.getCustomers(i).getReadyTime(), "c16_2_i=" + i); } // 17.机器人最大活动半径限制 for (int k = 0; k < NumberVans; k++) { for (int d = 0; d < NumberRobots; d++) { IloLinearNumExpr expr = cplex.linearNumExpr(); for (int i = 1; i <= NumberCustomers; i++) { for (int j = 1; j <= NumberCustomers; j++) { expr.addTerm(currentInstance.getDistanceCustomers(i, j), y[i][j][k][d]); } } cplex.addLe(expr, RobotMaxRadius, "c17_k=" + k + "_d=" + d); } } // 20-23.非负约束 for (int i = 1; i <= NumberCustomers; i++) { cplex.addGe(a[i], 0.0, "c21_a[" + i + "]"); cplex.addGe(b[i], 0.0, "c22_b[" + i + "]"); cplex.addGe(w[i], 0.0, "c23_w[" + i + "]"); for (int j = 0; j <= NumberCustomers; j++) { for (int k = 0; k < NumberVans; k++) { cplex.addGe(p[i][j][k], 0.0, "c20_p[" + i + "][" + j + "][" + k + "]"); } } } // 求解模型 long startTime = System.currentTimeMillis(); boolean solved = cplex.solve(); long endTime = System.currentTimeMillis(); long compTime = endTime - startTime; Solution solution = new Solution(instance); solution.setTimeForImprovedSolution(compTime); //处理结果 if (solved) { solution.setFeasible(); solution.setCost(cplex.getObjValue()); } else { solution.setCost(9999.99); //不可行解标记 } // Clean up cplex.end(); return solution; } catch (IloException e) { System.err.println("Concert exception caught: " + e); return null; } } }错误行:expr.add(-currentInstance.getTravelingTimeVehicle(i, j)); expr2 = cplex.linearNumExpr(); expr2.add(M);
07-27
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值