首页 > 编程知识 正文

简易方程40题及答案,简易方程试题

时间:2023-05-05 21:43:52 阅读:163151 作者:542

/*

有一个简单的内存池,内存按大小细分

每个粒度都有一些可用的内存资源

用户将进行一系列的内存申请

需要根据需要分配内存池中的资源

返回申请结果的成功失败列表

分配规则如下

1 .分配大于或等于内存申请量的内存

如果有满足需要的内存,就必须分配

优先分配粒度小的,但内存不能分割使用

2 .需要按申请顺序分配

如果分配给先申请的先,并且有可用的内存分配,则申请结果为true

如果不可用,则返回false

注释:不考虑内存释放

输入说明

作为两行字符串输入

第一行内存池列表

包含存储器粒度数据信息,粒度数据之间用逗号分割

用冒号分割一个粒度信息内

冒号之前是内存的粒度,冒号之后是几个

资源列表小于或等于1024

单位粒度的数量在4096以下

第二行为申请列表

请求的内存大小由逗号分隔,请求列表不超过100000

例如

63:2、128:1、32:4和1:128

50、36、64、128和127

输出说明

向内存池输出分配结果

例如true、true、true、false、false

示例1 :

输入:

63:2、128:1、32:4和1:128

50、36、64、128和127

输出:

真,真,真,假,假

说明:

存储器池资源包括64k中2个、128k中1个、32k中4个、1k中128个存储器资源

对于50、36、64、128、127存储器申请序列,

分配的内存的顺序是64、64、128、null和null

因为在第三次申请内存时分配了128,所以输出结果是

真,真,真,假,假

*/

# include stdio.h # include string.h # include stdlib.h # include math.h # include ctype.h # definestr _ max _ len 100000 int cnt; }DataInfo; intCMP(constvoid*a,const void *b ) datainfo*x=) datainfo* ) a; datainfo*y=(datainfo* ) b; return x-size - y-size; } voidstrsqit (datainfo meminfo [ memory _ max _ count ],int num ) { char tmp[2][10]; for(intk=0; k num; k () { int i=0; char *p1=NULL; P1=strtok(meminfo[k].s,' : '; wile(P1!=null ({ strcpy } tmp [ I ],p1 ); I; p1=strtok(null,','; }meminfo[k].size=atoi(tmp[0]; meminfo[k].cnt=atoi(tmp[1]; }}int main () { char str1[STR_MAX_LEN]; char str2[STR_MAX_LEN]; int list[MEMORY_MAX_COUNT]; int i=0; int j=0; datainfo meminfo [ memory _ max _ count ]; memset(meminfo,0,sizeof ) meminfo ); gets(str1; gets(str2; char *p1=NULL; char *p2=NULL; p1=strtok(str1,','; wile(P1!=null}{strcpy(meminfo[I].s,p1 ); I; p1=strtok(null,','; }strsqit(meminfo,I ); p2=strtok(str2,','; while(P2!=null({list[j]=atoi ) ) P2 ); j; p2=strtok(null,','; }qsort(meminfo,I,sizeof ) datainfo ),cmp ); /*for(intm=0; m i; m () printf('%d%d(n ),memInfo[m].size,memInfo[m].cnt ); }*/for(intm=0; mj; m ) { int flag=0; for(intn=0; 镍; n () if ) meminfo[n].cnt1 ) { continue; (if ) meminfo[n].sizelist[m] ) { flag=1; memInfo[n].cnt--; 黑; }if(flag==1) printf ) ) ture ); }else{printf('false ); (if ) mj-1 ) { printf ),); (else ) printf ((n ); } } return 0; }

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。