银行家算法

#include <stdio.h>
#include<string.h>struct yhjsf{int max[4];int allocation[4];int need[4];char name[20];char finsh;};struct yhjsf p[10];int main(){int i,j=0,a,b,c,available[20],request[20],newwork[20],xx,k=0,available1[20];//a表示资源的种类数,b表示进程的数量。char y;printf(“Input the type of resource and number of customer:\n”);scanf("%d%d",&a,&b);printf(“Input the amount of resource (maximum , allocated) of each customer:\n”);for(i=0;i<b;i++){printf(“p[%d] “,i);p[i].finsh=‘F’;for(j=0;j<a;j++){scanf(”%d,”,&p[i].max[j]); }//输入这些maxfor(j=0;j<a;j++){scanf("%d,",&p[i].allocation[j]); p[i].need[j]=p[i].max[j]-p[i].allocation[j];}//输入已分配的 } printf(“Input the amout of resources(available):”); for(i=0;i<a;i++){ scanf("%d,",&available[i]); available1[i]=available[i];}//输入可分配的printf(“available%d”,available1[0]);printf(“1、judge the system security\n2、judge the request security\n3quit\n”);do{printf(“输入选项数字:\n”);scanf("%d",&xx);switch(xx){case 1 :{printf(“Name Work Need Allocation Work+ Allocation Finish\n”); for(i=0;i<b;i++){ j=-1; do{j++;}while(available[j]>=p[i].need[j]&&j<a);if(ja&&p[i].finsh!=‘T’){p[i].finsh=‘T’;for(j=0;j<a;j++){newwork[j]=available[j]+p[i].allocation[j];}//work+allocationprintf(“p[%d] “,i);for(j=0;j<a;j++){printf(”%d “,available[j]);}printf(” “);for(j=0;j<a;j++){printf(”%d “,p[i].need[j]);}printf(” “);for(j=0;j<a;j++){printf(”%d “,p[i].allocation[j]);}printf(” “);for(j=0;j<a;j++){printf(”%d “,newwork[j]);}printf(” “);printf(”%c\n”,p[i].finsh) ;for(j=0;j<a;j++){available[j]=newwork[j];}//新的avaliablek++;//用来判断是不是这b个进程都可以变成Ti=-1;//直接重新开始再找,此时i直接回进行i++的操作,所以应该让i=-1。}}if(kb){printf(“SYSTEM SECURITY!!!\n”);}else{printf(“SYSTEM NOT SECURITY!!!”);};//安全算法的检测break; }case 2:{printf(“Please input the customer’s name and request\n”);printf(“p”);scanf("%d",&i);c=i;for(j=0;j<a;j++){ scanf("%d,",&request[j]); available[j]=available1[j];//available重置回去 }j=-1;do{ j++;}while(available[j]>=request[j]&&request[j]<=p[i].need[j]);//判断了有资源让他分配并且,request不会大于所需要的资源.if(j>=a){ for(j=0;j<a;j++){ available[j]=available1[j]-request[j]; p[i].need[j]=p[i].need[j]-request[j]; p[i].allocation[j]=p[i].allocation[j]+request[j]; } for(i=0;i<b;i++){ p[i].finsh=‘F’;//重置finsh因为上个已经将分手变为1了。 } k=0;//重置k for(i=0;i<b;i++){ j=-1; do{j++; }while(available[j]>=p[i].need[j]&&j<a); if(ja&&p[i].finsh!=‘T’){ p[i].finsh=‘T’; for(j=0;j<a;j++){ newwork[j]=available[j]+p[i].allocation[j]; }//work+allocation printf(“p[%d] “,i); for(j=0;j<a;j++){ printf(”%d “,available[j]); } printf(” “); for(j=0;j<a;j++){ printf(”%d “,p[i].need[j]); } printf(” “); for(j=0;j<a;j++){ printf(”%d “,p[i].allocation[j]); } printf(” “); for(j=0;j<a;j++){ printf(”%d “,newwork[j]); } printf(” “); printf(”%c\n”,p[i].finsh) ; for(j=0;j<a;j++){ available[j]=newwork[j]; }//新的avaliable k++;//用来判断是不是这b个进程都可以变成T i=-1;//直接重新开始再找,此时i直接回进行i++的操作,所以应该让i=-1。 } }if(kb){printf(“SYSTEM SECURITY!!!\nCUSTOMER P%d CAN GET RESOURCES IMMEDIATELY\n”,c);}else{printf(“RESOURCE INSECURITY!!!\nCUSTOMER P%d CAN NOT OBTAIN RESOURCES IMMEDIATELY\n”,c);};for(j=0;j<a;j++){p[c].need[j]=p[c].need[j]+request[j];p[c].allocation[j]=p[c].allocation[j]-request[j];} }else{printf(“RESOURCE INSECURITY!!!\nCUSTOMER P%d CAN NOT OBTAIN RESOURCES IMMEDIATELY\n”,c);};}//重置变化的数据break;case 3:break; }}while(xx!=3);}在这里插入图片描述

内容概要:本文详细介绍了OCR(光学字符识别)技术,从定义出发,阐述了它是如何让计算机“看懂”图片里的文字,通过扫描仪等设备读取文本图像并转换成计算机可编辑的文本。文中列举了OCR在办公、图书馆、交通、金融等领域的广泛应用实例,如快速处理纸质文件、车牌识别、银行支票处理等。接着回顾了OCR的发展历程,从20世纪初的萌芽到如今基于深度学习的智能化时代,期间经历了从简单字符识别到复杂场景下的高精度识别的演变。技术层面,深入解析了OCR的关键技术环节,包括图像预处理、文本检测、文本识别和后处理,每个环节都采用了先进的算法和技术手段以确保识别的准确性。最后探讨了OCR在未来可能面临的挑战,如复杂场景下的识别准确率、特殊字体和语言的支持以及数据安全问题,并展望了其与人工智能融合后的广阔前景。 适合人群:对OCR技术感兴趣的技术爱好者、开发者以及希望了解该技术在各行业应用的专业人士。 使用场景及目标:①帮助用户理解OCR技术的基本原理和发展历程;②展示OCR在多个行业中的具体应用场景,如办公自动化、金融票据处理、医疗病历管理等;③探讨OCR技术面临的挑战及未来发展方向,为相关从业者提供参考。 其他说明:本文不仅涵盖了OCR技术的基础知识,还深入探讨了其背后的技术细节和发展趋势,对于想要深入了解OCR技术及其应用的人来说是非常有价值的参考资料。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值