ras_123123 2010-04-13 09:49
浏览 267
已采纳

JAVA算法

发此问题时本人已经过多般思考和编写不能实现理想结果,不是那种点点问题就来问的人`希望知道的
帮下!
例:有4个任务分配a,b,c三个人a现有11个任务,b现有2个任务,c有3个任务,如何分配最平均但又不能低于
现在有任务,结果最终为a=11,b=4,c=5或a=11,b=5,c=4都行。
有30个任务分配啊a现有2,b现有2,c现有10分配结果最终 a=14 b=15 c=15或a=15 b=15 = c14等。
现在这样是写死了的·要求需分配任务不确定,要分配的人不确定来自于数据库某张表的所有行。
现有任务是表里某行所对应的字段。用JAVA或存储过程能实现就行,可以把代码写死,但改动数据也能成功
写不下的话发我邮箱ras_12312312@163.com,万分感谢!

  • 写回答

2条回答 默认 最新

  • Alucard-阿卡多 2010-04-14 14:44
    关注

    [color=red]task方法是实现方法,taskList内的值是你数据库里取出的任务记录,你数据库取时加一下排序,list里的值是从小到大。taskCount是待分配任务总数,代码写的不怎么规范,就是为了实现功能而已。
    [/color]
    [code="java"]

    public static List task(List taskList,Integer taskCount){
    for(int i=1;i int temp;
    temp =(taskList.get(i)-taskList.get(i-1))*i;
    if(taskCount/temp != 0){
    a(taskList,i,temp);
    }else{
    a(taskList,i,taskCount);
    taskCount = taskCount -temp;
    break;
    }
    taskCount = taskCount -temp;
    if(taskCount break;
    }
    }
    if(taskCount>0){
    a(taskList,taskList.size(),taskCount);
    }
    return taskList;

    }
    public static boolean a(List taskList,int k,int temp){
    boolean res = false;
    for(int i=0;i taskList.set(i, taskList.get(i)+temp/k);
    }
    if(temp/k == 0){
    for(int j=0;j taskList.set(j, taskList.get(j)+1);
    res =true;
    }
    }
    if(temp>k){
    for(int j=0;j<temp%k;j++){
    taskList.set(j, taskList.get(j)+1);
    res =true;
    }
    }
    return res;
    }
    [/code]

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 hexo+github部署博客
  • ¥15 求螺旋焊缝的图像处理
  • ¥15 blast算法(相关搜索:数据库)
  • ¥15 请问有人会紧聚焦相关的matlab知识嘛?
  • ¥15 网络通信安全解决方案
  • ¥50 yalmip+Gurobi
  • ¥20 win10修改放大文本以及缩放与布局后蓝屏无法正常进入桌面
  • ¥15 itunes恢复数据最后一步发生错误
  • ¥15 关于#windows#的问题:2024年5月15日的win11更新后资源管理器没有地址栏了顶部的地址栏和文件搜索都消失了
  • ¥100 H5网页如何调用微信扫一扫功能?