HDU - 2474 Process scheduling (模拟银行家算法)
来源:互联网 发布:阿里云 ssh 断开 编辑:程序博客网 时间:2024/04/28 08:50
题目大意:
给你两个数字n和m,n代表进程的个数,m代表资源的个数。
现在题目要求你输入4个部分:
1.n和m
2.当前每个进程所含有的资源数,注意这里行为资源,列为进程
3.每个进程每次执行所需要的资源数
4.当前操作系统所拥有的资源
现在要你模拟银行家算法,分析是否能把所有的进程跑完,如果能就Yes,否则No
解析:
银行家算法的步骤:
每次查找所需要没有用过的进程,并把当前进程所需要的资源和操作系统的资源比较,如果操作系统的资源 < 所需要的资源,就不使用,否则使用当前的进程,并把当前进程标记为访问,并把所有的资源返回给操作系统。
暴力模拟银行家算法,但是请注意有一个坑点,就是要进程从后往前算,否则超时。
给你两个数字n和m,n代表进程的个数,m代表资源的个数。
现在题目要求你输入4个部分:
1.n和m
2.当前每个进程所含有的资源数,注意这里行为资源,列为进程
3.每个进程每次执行所需要的资源数
4.当前操作系统所拥有的资源
现在要你模拟银行家算法,分析是否能把所有的进程跑完,如果能就Yes,否则No
解析:
银行家算法的步骤:
每次查找所需要没有用过的进程,并把当前进程所需要的资源和操作系统的资源比较,如果操作系统的资源 < 所需要的资源,就不使用,否则使用当前的进程,并把当前进程标记为访问,并把所有的资源返回给操作系统。
暴力模拟银行家算法,但是请注意有一个坑点,就是要进程从后往前算,否则超时。
可能是出题者为了坑人,故意把所有的可能情况都出到了后面。
#include <cstdio>#include <cstring>#include <algorithm>using namespace std;const int N = 50005;const int M = 5;//N代表进程数,M代表资源int all[N][M] ,req[N][M] ,res[M];int vis[N];int n,m;bool judge(int i) {for(int j = 0; j < m; j++) {if(req[i][j] > res[j]) {return false;}}return true;}int main() {while(scanf("%d%d",&n,&m) != EOF) {for(int i = 0; i < m; i++) {for(int j = 0; j < n; j++) {scanf("%d",&all[j][i]);}}for(int i = 0; i < m; i++) {for(int j = 0; j < n; j++) {scanf("%d",&req[j][i]);}}for(int i = 0; i < m; i++) {scanf("%d",&res[i]);}int sum = 0 ,cnt;memset(vis,0,sizeof(vis));while(true) {cnt = 0;for(int i = n-1; i >= 0; i--) {if(!vis[i] && judge(i)) {vis[i] = true;for(int j = 0; j < m; j++) {res[j] += all[i][j];}cnt++;}}sum += cnt;if(sum == n || cnt == 0) {break;}}if(sum == n) {printf("Yes\n");}else {printf("No\n");}}return 0;}
0 0
- HDU - 2474 Process scheduling (模拟银行家算法)
- hdu 2474 Process scheduling(模拟+队列)
- hdu 2474 Process scheduling
- hdu 2474 Process scheduling
- 操作系统 银行家算法模拟(一)
- 操作系统 银行家算法模拟(二)
- 操作系统 银行家算法模拟(三)
- 银行家算法的模拟
- 银行家算法模拟
- 银行家算法c模拟
- 多线程模拟银行家算法
- 模拟银行家算法
- python模拟银行家算法
- 银行家算法模拟代码
- LKD读书笔记(process Scheduling)
- 银行家算法的模拟实现
- 死锁避免-银行家算法 模拟
- 银行家算法vc++模拟实现
- ubuntu怎么设置root用户
- POJ 2353 Ministy 动态规划 双向DP
- 实践部署与使用apache kafka框架技术博文资料汇总
- maven的webapp项目热部署到eclipse,biz等子项目的jar包都找不到的解决方案!
- 模板的一个小实例
- HDU - 2474 Process scheduling (模拟银行家算法)
- 【C语言疯狂讲义】(三)C语言运算符
- 『ANDROID』java中enum的一种用法(by server return code)
- 【LeetCode】Remove Duplicates from Sorted List
- Python IP地址 socket.inet_ntoa unpack/pack
- 看《H.264官方中文版》有感
- android 架构
- [LeetCode] Spiral Matrix
- scanf函数