美文网首页
数学问题——内存分配

数学问题——内存分配

作者: 欢城深喟 | 来源:发表于2019-03-10 10:50 被阅读0次

知识点

  • 内存块不能重复分配,用标志数组标志是否分配过
  • 最佳适应算法
  • 输出格式控制

未解决的疑问

  • sort() 函数将内存块从小到大排列无法通过

代码

/*
1. 内存块不能重复分配
2. 最佳适应算法 
*/ 

#include<iostream>
using namespace std;

int main(){
    
    int arr[105]; //接收内存块数组 
    bool flag[105]; //是否分配过 
    int T, N, M; //T 组数据 N 个内存块 M 个请求 
    cin>>T;
    
    while(T--){
        
        cin>>N;
        
        for(int i=0;i<105;i++){ //初始化 
            
            arr[i] = 0;
            flag[i] = false;
        }
        
        for(int i=0;i<N;i++){ //接收内存块大小 
            
            cin>>arr[i];
        }
        
        cin>>M;
        
        bool mark = false;
        while(M--){
            
            int req;
            int min = 100000;
            int index = -1;
            cin>>req;
            
            for(int i=0;i<N;i++){
                
                if(arr[i]-req>=0 && flag[i]==false){ //能容纳请求容量且未被使用 
                
                    int tmp = arr[i] - req;
                    if(tmp < min){ //找到最合适内存块 
                        
                        min = tmp;
                        index = i;
                    }
                }
            }
            
            if(index == -1){ //没有能容纳的内存块
                
                if(mark == false){
                    
                    mark = true;
                    cout<<"NULL";
                }
                else    cout<<" NULL";
            }
            else{ //有能容纳的内存块
                
                if(mark == false){
                    
                    mark = true;
                    flag[index] = true;
                    cout<<arr[index];
                } 
                else{
                
                    flag[index] = true;
                    cout<<" "<<arr[index];
                }
            }
        }
        
        cout<<endl; 
    }
    
    return 0; 
} 

相关文章

  • 数学问题——内存分配

    知识点 内存块不能重复分配,用标志数组标志是否分配过 最佳适应算法 输出格式控制 未解决的疑问 用 sort() ...

  • 内存分配问题

    碎片问题:对于堆来讲,频繁的new/delete势必会造成内存空间的不连续,从而造成大量的碎片,使程序效率降低。对...

  • Redis字符串的性能优势三

    降低空间分配次数提升内存使用效率 字符串的追加操作会涉及到内存分配问题,然而内存分配问题会牵扯内存划分算法以及系统...

  • HashMap 源码问答

    问题一:HashMap 初始化分配内存了吗? 问题二:HashMap 什么时候分配的内存?第一次分配了多少? 问题...

  • JVM对并发分配内存处理方式

    内存分配部分 为对象分配内存的基本方法:指针碰撞法、空闲列表法 内存分配并发问题的解决:CAS、TLAB JVM对...

  • C,C++内存分配

    C语言内存分配: 静态内存分配,分配内存大小的是固定,问题:1.很容易超出栈内存的最大值 2.为了防止内存不够用会...

  • 管理与分配内存

    1. java的内存管理机制 Java的内存管理就是对象的分配和释放问题 ,分两个部分 分配:内存的分配是由程序完...

  • Netty源码七 ByteBuf

    内存分配概述 介绍netty内存分配,最为底层,负责从底层读据到ByteBuf。 三个问题+内存类别有哪些+如何减...

  • 【019】2020.11.19 周四 Java内存分布与回收策略

    内存分布与回收策略 解决两个问题 自动给对象分配内存 基本上都是堆上分配 自动回收分配给对象的内存 对象优先在新生...

  • 性能优化实践(四)-内存优化

    一、应用层 对应用层来说,最主要的内存问题还是内存泄漏问题。 Java中的内存分配 静态储存区:编译时就分配好,在...

网友评论

      本文标题:数学问题——内存分配

      本文链接:https://www.haomeiwen.com/subject/qihupqtx.html