Cost Cutting

http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=2827 三个数中,选出中间那个,cmax我用来表示的

#include<stdio.h>

int main(){

    int n,a,b,c,cmax,m=0;

    scanf("%d",&n);

    while(n--){

    m++;

    scanf("%d%d%d",&a,&b,&c);

    if(a>b)if(a>c)if(b>c)cmax=b;

                   else  cmax=c;

           else cmax=a;

    else if(b>c)if(a>c)cmax=a;

              else cmax=c;

          else  cmax=b;

    printf("Case %d: %d\n",m,cmax);

}

       return 0;    

}

转载于:https://www.cnblogs.com/sujunjie/archive/2013/02/28/2937575.html

% 问题2: 考虑缺陷情况下的最优切割方案 % 加入缺陷信息 defects = struct('material_id', [1, 1, 2, 2, 3], ... 'start_pos', [1.0, 2.5, 0.5, 1.8, 3.0], ... 'length', [0.03, 0.04, 0.02, 0.05, 0.03]); % 初始化变量 A = zeros(num_materials * num_orders, num_materials * num_orders); b = zeros(num_materials * num_orders, 1); % 构建约束条件,考虑缺陷 for i = 1:num_materials material_defects = defects(defects.material_id == i); defect_positions = [material_defects.start_pos]; defect_lengths = [material_defects.length]; for j = 1:num_orders idx = (i-1)*num_orders + j; cutting_length = 2 * orders(j).width + 2 * orders(j).height + saw_width; valid_positions = true(1, length(defect_positions) + 1); for k = 1:length(defect_positions) if defect_positions(k) <= cutting_length && cutting_length <= defect_positions(k) + defect_lengths(k) valid_positions(k) = false; end end if any(valid_positions) A(idx, :) = sparse((i-1)*num_orders + j, idx, cutting_length, num_materials * num_orders, num_materials * num_orders); b(idx) = materials(i).length - sum(defect_lengths); else A(idx, :) = sparse((i-1)*num_orders + j, idx, 0, num_materials * num_orders, num_materials * num_orders); b(idx) = 0; end end end % 求解线性规划问题 [x, cost, exitflag] = linprog(f, A, b, eq_constr, rhs_eq, zeros(num_materials * num_orders, 1), [], options); if exitflag > 0 disp('求解成功'); disp(['总成本:', num2str(cost)]); else disp('求解失败'); end % 计算利用率和切割损失率 total_material_used = sum(x .* (2 * orders.width + 2 * orders.height + saw_width)); total_material_length = sum(materials.length .* sum(reshape(x, num_materials, num_orders))); utilization_rate = total_material_used / total_material_length; cut_loss_rate = 1 - utilization_rate; disp(['利用率:', num2str(utilization_rate)]); disp(['切割损失率:', num2str(cut_loss_rate)]); 检查上述代码,并给我详细解释一下
06-01
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值