................不好意思啊
比如:进程数为3,资源类数为1(共12个),各个进程最大需求:10,4,9. 初始分配:5,2,2.应该求解得安全序列为:p1,p0,p2.      ----但实际求得“p0,p1,p2”(不对)。
求解啊。

解决方案 »

  1.   


    ................不好意思啊
    比如:进程数为3,资源类数为1(共12个),各个进程最大需求:10,4,9. 初始分配:5,2,2.应该求解得安全序列为:p1,p0,p2.      ----但实际求得“p0,p1,p2”(不对)。
    求解啊。--------------
    主要可能有问题的地方:
    $('#btn3').bind('click',function(){
    safe();
    if(safe_array.length<process){
    data="<span style='color:#F00'>不存在安全序列!</span>";
    }else{
    data="可用的一组安全序列为:<br/>";
    for(var i=0;i<safe_array.length;i++){
    data+="<span style='color:#FFF'>"+safe_array[i]+"</span>";
    if(i<safe_array.length-1)
    data+="->";
    }
    }
    --------------------
    function safe(){
    safe_array=[];
    var flag=0;
    for(var i=0;i<resource;i++){
    work[i]=available[i];
    }
    for(var i=0;i<process;i++){
    finish[i]=false;
    }
    for(var z=0;z<process;z++){
    for(var i=0;i<process;i++){
    for(var j=0;j<resource;j++){
    if(work[j]-need[i][j]>=0){
    flag++;
    }
    }
    if(flag==resource){
    if(!finish[i]){
    finish[i]=true;
    safe_array.push(i);
    free(i);
    }
    }
    flag=0;
    }
    }
    }
    function free(p){
    for(var j=0;j<resource;j++){
    work[j]+=allocation[p][j];
    }
    }
      

  2.   


    我找到问题了,但还没法解决,请帮帮忙。
    $('#btn2').bind('click',function(){
    var avai=document.getElementsByName("avai[]");
    for(var i=0;i<resource;i++)
    available[i]=parseInt(avai[i].value);
    data="最大需求资源<br/>";
    for(var i=0;i<process;i++){
    data+="<span style='color:#00F'>进程"+i+"</span>:";
    for(var j=0;j<resource;j++)
    data+='<span style="color:#0F0">资源'+j+'</span><input type="text" class="text" onKeyUp="construct();" value="'+Math.floor(Math.random()*available[j])+'" name="c[]"/>';
    data+="<br/>";
    }
    $('#allocation').html(data);
    setClaim();
    data="已分配资源<br/>";
    for(var i=0;i<process;i++){
    data+="<span style='color:#00F'>进程"+i+"</span>:";
    for(var j=0;j<resource;j++)
    data+='<span style="color:#0F0">资源'+j+'</span><input type="text" class="text" onKeyUp="construct();check();" value="'+Math.floor(Math.random()*claim[i][j])+'" name="allo[]"/>';
    data+="<br/>";
    }
    $('#claim').html(data);
    $('#step3').show();
    construct();
    });
    --------------------------
    问题在那两句“...value="'+Math.floor(Math.random()..."现在不要随机数,要手动输入页面的数值,用val()返回?还是用js给输入框加id再返回。乱了吧,帮改改吧
      

  3.   

    <body>
    <div id = "aa">
    <input type = "text" value = ""/>
    <input type = "text" value = ""/>
    <input type = "text" value = ""/>
    <input type = "text" value = ""/>
    <input type = "text" value = ""/>
    </div>
    <div id = "get">get</div>
    </body>
    <script src = "js/jquery.js"></script>
    <script type="text/javascript">
    $("#get").click(function(){
    var input = [],
        value = "";

    $("#aa input").each(function(){
    //遍历id=aa下面的所有的input,然后使用下面的一句获取input的输入值,并存入value
    value = $(this).value;
    input.push(value);
    //把value存入input数组,就可以获取到所有的input的输入值了。
    });
    });
    </script>我不是太能看懂你想要表达的意思,所以很不好意思如果你能知道,我只能理解你想要获取input输入的值,然后存入到一个数组,然后再按照你之前的算法去执行,这里我只能写个例子了,我看你的input也是没有用id表示的,只有父元素有一个标签是有id的,所以结构应该和你的差不多,你按照这个例子试着改改。最后的值,是被放入了名称为input的数组了。
    这个你自己再取名吧,把取到的值,放入相应的数组,就可以执行你之前的操作了。