哈哈哈,第一次发博客
刚好最近有个银行家算法的作业
#include
int max[5][4],al[5][4],nee[5][4];
int req[5][4];
int ava[4];
int m[5]={0,0,0,0,0}; //标志进程i是否建议进行分配
int xl[5]={0,0,0,0,0}; //安全序列
void jcsfks()
{
for(int b=0;b<5;b++) //检测是否可以由b进程开始进行分配
{
if(m[b]!=2) //2表示该进程已完成分配,无需考虑
{
if( ( ava[0]>=nee[b][0] ) && ( ava[1]>=nee[b][1] ) && ( ava[2]>=nee[b][2] )&& ( ava[3]>=nee[b][3] ) )
m[b]=1; //标志进程i是否可以进行分配
else
m[b]=0;
}
}
for(int t=0;t<5;t++)
printf("%d ",m[t]); //输出每个进程是否可进行分配的标志
printf("\n");
}
void jcxl()
{
int sd=0;
for( int i=0; i<10; i++)
{
if( m[i%5]==1 )
{
for(int j=0; j<4; j++) //计算i进程完成后ava数组的值
{
ava[j] = ava[j] + al[i][j]; //释放资源
nee[i%5][j]=0; //需求置0
}
m[i%5]=2; //将已完成的进程置2,不再重复对该程序进行判断
xl[sd]=i%5; //将该进程的序号放入安全序列数组
jcsfks(); //更新数据,确认是否有新的进程可以进行分配进程
sd++;
}
}
printf("\n");
}
int main()
{
int cd=0;
int abc=0;
printf("请输入所有进程的最大需求");
for(int i=0;i < 5;i++) //填好每个进程的最大需求
for(int j=0; j<4; j++)
{
scanf("%d", &max[i][j]);
}
printf("请输入所有进程的已分配的值\n");
for(int c =0; c<5; c++) //每个进程已得到的资源数
for(int j=0; j<4; j++)
{
m[c]=1;
scanf("%d", &al[c][j]);
}
printf("请输入剩余资源数");
for(int y=0;y<4;y++)
scanf("%d",&ava[y]);
for(int d=0; d<5; d++) //计算每个进程还需要的资源数,输入剩余资源数
for(int j=0; j<4; j++)
nee[d][j]=max[d][j]-al[d][j];
printf("每个进程还需要的各类资源数:");
for(int x=0; x<5; x++) //显示需求数组
{
for(int j=0; j<4; j++)
printf("%d ",nee[x][j]);
printf("\n");
}
printf("此时的各进程是否可以进行资源分配状态:\n");
jcsfks();
jcxl();
for(int ab=0;ab<5;ab++)
abc+=xl[ab];
if(abc==10)
{
printf("该系统处于安全状态:\n");
printf("安全序列为:\n"); //输出安全序列
for(int a=0;a<5;a++)
printf("%d ",xl[a]);
}
else
printf("该系统处于非安全状态:\n");
printf("以下是req进程计算:\n");
printf("请输入所有进程的最大需求:\n");
for(int i1=0;i1 < 5;i1++) //填好每个进程的最大需求
for(int j=0; j<4; j++)
{
scanf("%d", &max[i1][j]);
}
printf("请输入所有进程的已分配的值\n");
for(int c1=0; c1<5; c1++) //每个进程已得到的资源数
for(int j=0; j<4; j++)
{
m[c1]=1;
scanf("%d", &al[c1][j]);
}
printf("请输入剩余资源数:\n"); //输入剩余资源数
for(int y1=0;y1<4;y1++)
scanf("%d",&ava[y1]);
printf("请输入req数组\n");
for(int l=0;l<5;l++)
for(int j=0;j<4;j++)
scanf("%d",&req[l][j]);
for(int d1=0; d1<5; d1++) //计算每个进程还需要的资源数
for(int j=0; j<4; j++)
{
nee[d1][j]=max[d1][j]-al[d1][j];
ava[j]-=req[d1][j];
}
printf("此时的各进程是否可以进行资源分配状态:\n");
jcsfks();
jcxl();
for(int b=0;b<5;b++)
cd+=m[b];
if(cd==10)
printf("系统可以将这些资源分配给这些进程");
else
printf("系统不可以将这些资源分配给这些进程");
return 0;
}
你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。
我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客:
撤销:Ctrl/Command + Z
重做:Ctrl/Command + Y
加粗:Ctrl/Command + B
斜体:Ctrl/Command + I
标题:Ctrl/Command + Shift + H
无序列表:Ctrl/Command + Shift + U
有序列表:Ctrl/Command + Shift + O
检查列表:Ctrl/Command + Shift + C
插入代码:Ctrl/Command + Shift + K
插入链接:Ctrl/Command + Shift + L
插入图片:Ctrl/Command + Shift + G
查找:Ctrl/Command + F
替换:Ctrl/Command + G
直接输入1次#,并按下space后,将生成1级标题。
输入2次#,并按下space后,将生成2级标题。
以此类推,我们支持6级标题。有助于使用TOC
语法后生成一个完美的目录。
强调文本 强调文本
加粗文本 加粗文本
标记文本
删除文本
引用文本
H2O is是液体。
210 运算结果是 1024.
链接: link.
图片:
带尺寸的图片:
居中的图片:
居中并且带尺寸的图片:
当然,我们为了让用户更加便捷,我们增加了图片拖拽功能。
去博客设置页面,选择一款你喜欢的代码片高亮样式,下面展示同样高亮的 代码片
.
// An highlighted block
var foo = 'bar';
一个简单的表格是这么创建的:
项目 | Value |
---|---|
电脑 | $1600 |
手机 | $12 |
导管 | $1 |
使用:---------:
居中
使用:----------
居左
使用----------:
居右
第一列 | 第二列 | 第三列 |
---|---|---|
第一列文本居中 | 第二列文本居右 | 第三列文本居左 |
SmartyPants将ASCII标点字符转换为“智能”印刷标点HTML实体。例如:
TYPE | ASCII | HTML |
---|---|---|
Single backticks | 'Isn't this fun?' |
‘Isn’t this fun?’ |
Quotes | "Isn't this fun?" |
“Isn’t this fun?” |
Dashes | -- is en-dash, --- is em-dash |
– is en-dash, — is em-dash |
一个具有注脚的文本。2
Markdown将文本转换为 HTML。
您可以使用渲染LaTeX数学表达式 KaTeX:
Gamma公式展示 Γ ( n ) = ( n − 1 ) ! ∀ n ∈ N \Gamma(n) = (n-1)!\quad\forall n\in\mathbb N Γ(n)=(n−1)!∀n∈N 是通过欧拉积分
Γ ( z ) = ∫ 0 ∞ t z − 1 e − t d t . \Gamma(z) = \int_0^\infty t^{z-1}e^{-t}dt\,. Γ(z)=∫0∞tz−1e−tdt.
你可以找到更多关于的信息 LaTeX 数学表达式here.
可以使用UML图表进行渲染。 Mermaid. 例如下面产生的一个序列图:
这将产生一个流程图。:
我们依旧会支持flowchart的流程图:
如果你想尝试使用此编辑器, 你可以在此篇文章任意编辑。当你完成了一篇文章的写作, 在上方工具栏找到 文章导出 ,生成一个.md文件或者.html文件进行本地保存。
如果你想加载一篇你写过的.md文件,在上方工具栏可以选择导入功能进行对应扩展名的文件导入,
继续你的创作。
mermaid语法说明 ↩︎
注脚的解释 ↩︎