zoukankan      html  css  js  c++  java
  • 2019寒假训练营寒假作业(二) 程序题部分

    程序题


    实现思路:

    按照题目要求:
    


    那么用C语言构建思路很明显: - 创建结构体数组或者动态链表(采用了前者,前者构建和遍历比较简单) - 读取每一行发送方名称和数据大小(用%*s忽略“bob”的输入) - 遍历名单查看是否已经存储(构建函数,使用strcmp) - 记录内容(构建函数,使用strcpy) - 判断是否异常(在本次请求大小超过LIMIT以后,同时记录下黑客用户名,修改已发现黑客个数) - 循环至文件结尾 - 输出名单(构建函数)
    (选择将一些必要数据例如:已经发出请求的个数和已经发现的黑客个数及其hack记录名单,设为全局变量,以减少一些在函数中的传递调用。)
    

    实现结果

    检查Request.txt是否已经在该目录下,检查完毕后,编译运行:
    




    打开output.txt:
    


    第二次作业代码: (希望结果正确Orz。)
    

    hacklist

    开放题

    吐槽:
    - 创建了26*26*26*26的记录空间,可能会占据太多无用空间;
    - 只适用于四个小写字母的用户名,对于更长或者使用更多其它字符的用户名可能会超出内存范围,不具有拓展性。 
    
    新的想法:
    先另外创建一个arrange.txt文件,将名单按照请求者名称按照 字典序(ASCLL码大小) 重新排序输入到该文件中;再调用该文件,重定向,将属于同一个请求者的请求集中处理,判断为黑客后输出到ouput.txt。
    
    该想法的优点:
    不需要另开临时内存记录,减少了不必要的无用空间占用,也避免了请求者名称长度不定长或者使用特殊字符的特殊情况。
    
    缺点:
    - 该方法操作复杂,在排序时和判断时可能需要对文档中的光标进行移动(调用fseek函数,保证偏移量即可)
    - 效率较低,尤其是在数据极大(超过万或十万)的情况下,排序可能需要考虑快排以减少计算时间,但也必须等到所有人排序结束后才开始判断。
    
    实现:暂无。(亦或许使用python的字典和内置函数实现更快)
  • 相关阅读:
    让资源管理器不显示最近常用文件夹
    票房实际是屌丝血
    为什么读了很多书,还是过不好这一生?
    抱怨就像呕吐
    finally关键字小复习
    Java中菜单组件
    Java的GUI窗体出现乱码解决方法
    Java中GUI的默认窗体布局 和 常见的窗体布局方案
    适配器类(便利类)的由来:当你自己写的类中想用某个接口中个别方法的时候(注意:不是所有的方法),肿么办?
    技术管理者工作成效评估表
  • 原文地址:https://www.cnblogs.com/fzu2018-clf-bky-blog/p/10344528.html
Copyright © 2011-2022 走看看