首页 > 编程语言 >银行家算法-安全性检验

银行家算法-安全性检验

时间:2022-11-19 20:13:41浏览次数:38  
标签:int max flag 算法 pname progress 安全性 银行家

#include<bits/stdc++.h>
using namespace std;
struct progress{
    int max[3];
    int all[3];
    int need[3];
    char pname[4];
};
void fac(int n,int m,int *se,progress *p){
    int flag[n];
    for(int i=0;i<n;i++) flag[i]=0;
    int num=0;
    int in=n;
    while(in){
        num++;
        for(int i=0;i<n;i++){
            if(flag[i]!=2)
                flag[i]=0;
    }
         
        for(int i=0;i<n;i++){
        for(int j=0;j<m;j++){
            if(p[i].need[j]>se[j])
                flag[i]=1;
        }
    }
 //       for(int i=0;i<n;i++) cout<<flag[i]<<" ";cout<<endl;
        for(int k=0;k<n;k++){
            if(flag[k]==0){
                in--;
                for(int l=0;l<m;l++){
                    se[l]+=p[k].all[l];
                }
                flag[k]=2;
                break;
            }
        }
        
        if(num>5){
            break;
        }
    }
  // cout<<"in:"<<in;
  //   cout<<"num:"<<num<<endl;
    if(in>0){
        cout<<"找不到安全序列,处于不安全状态。";
    }
    else
        cout<<"找到安全序列,处于安全状态。";
}
void printend(int n,int m,progress *p,int *se){
    cout<<"name max allocation need available"<<endl;
    for(int i=0;i<n;i++){
        cout<<p[i].pname<<" ";
        for(int j=0;j<m;j++){
            cout<<p[i].max[j]<<" ";
        }
        cout<<"| ";
        for(int j=0;j<m;j++){
            cout<<p[i].all[j]<<" ";
        }
        cout<<"| ";
        for(int j=0;j<m;j++){
            cout<<p[i].need[j]<<" ";
        }
        cout<<"|";
        
        if(i==0){
        for(int j=0;j<m;j++){
            if(j==0){
                cout<<" "<<se[j]<<" ";
            }
            else if(j<m-1)
            cout<<se[j]<<" ";
            else
                cout<<se[j];
        }
    }
        cout<<endl;
    }
    fac(n,m,se,p);
}
int main(){
    int n;
    int m;
    cin>>n>>m;
    int s[m];
    progress p[n];
    for(int i=0;i<m;i++){
        cin>>s[i];
    }
    for(int i=0;i<n;i++){
        cin>>p[i].pname;
        for(int j=0;j<m*2;j++){
            if(j<m)
                cin>>p[i].max[j];
            else
                cin>>p[i].all[j-m];
        }
    }
    for(int i=0;i<n;i++){
        for(int j=0;j<m;j++){
            p[i].need[j]=p[i].max[j]-p[i].all[j];
        }
    }
    int se[m];
    for(int i=0;i<m;i++){
        se[i]=s[i];
    }
    for(int i=0;i<m;i++){
        for(int j=0;j<n;j++){
            se[i]-=p[j].all[i];
        }
    }
    printend(n,m,p,se);
    return 0;
}

  到底哪出了问题?有测试点过不去

标签:int,max,flag,算法,pname,progress,安全性,银行家
From: https://www.cnblogs.com/lf-ancer/p/16906898.html

相关文章

  • 落谷 R94681591 -- 并查集+离线算法+倒序处理
    题目描述树的变迁思路因为更改点的权值不会改变树的结构,但是删去一条边会改变树的结构,不同与增加一条边,删除一条边的处理是很麻烦(没实现过!!!)既然我们无法删除一条边,那么......
  • 强化学习代码实战-08 DDPG 算法
    PPO算法是离线学习法,样本效率利用率低,且对连续动作空间情况处理能力弱,无法精细控制DDPG-深度确定性策略梯度算法,离线学习、处理连续动作空间DDPG构造一个确定性策略,采用......
  • 实验四:神经网络算法实验
     |20大数据三班| 20大数据三班 ||----|----|----||作业要求|作业要求||学号|20161337|【实验目的】理解神经网络原理,掌握神经网络前向推理和后向传播方......
  • 实验四:神经网络算法实验
    实验四:神经网络算法实验【实验目的】理解神经网络原理,掌握神经网络前向推理和后向传播方法;掌握神经网络模型的编程实现方法。【实验内容】1981年生物学家格若根(W.Gro......
  • 实验四 神经网络算法实验
    【实验目的】理解神经网络原理,掌握神经网络前向推理和后向传播方法;掌握神经网络模型的编程实现方法。【实验内容】1.1981年生物学家格若根(W.Grogan)和维什(W.Wirth)发现了......
  • 页面置换算法:LRU和LFU
    目录页面置换算法简介LRU和LFU算法算法实现LRU算法题目:Leetcode.16.25思路代码实现LFU算法思路代码实现页面置换算法简介在地址映射过程中,若在页面中发现所要访问的页面......
  • 【分类-DELM】基于麻雀搜索算法改进深度学习极限学习机实现数据分类附matlab代码
    ✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。......
  • 【VRP问题】基于蚁群算法求解配送路径最短问题附matlab代码
    ✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。......
  • PGL图学习之图神经网络GraphSAGE、GIN图采样算法[系列七]
    0.PGL图学习之图神经网络GraphSAGE、GIN图采样算法[系列七]本项目链接:https://aistudio.baidu.com/aistudio/projectdetail/5061984?contributionType=1相关项目参考:更......
  • 每日算法之翻转单词序列
    JZ73翻转单词序列描述牛客最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上。同事Cat对Fish写的内容颇感兴趣,有一天他向Fish借来翻看,但却读不懂它......