CCFCSP 202104-3 DHCP服务器(C++(100)带解析Python(70)思路相同)

本文介绍了一道编程题,涉及DHCP服务器的实现,主要使用C++和Python两种语言。作者指出Python实现可能存在超时问题,而C++版通过结构体有效地处理了IP地址池的管理。文章提供了C++代码和解析,强调C++在处理此类问题上的优势。
摘要由CSDN通过智能技术生成

这道题其实就是将其文字内容翻译成代码,从具体实现方法开始一句一句翻译就ok

Python代码

N,Tdef,Tmax,Tmin,H=list(input().split())
N,Tdef,Tmax,Tmin=list(map(int,[N,Tdef,Tmax,Tmin]))
n=int(input())
k=0
def update(tc):
    for i in range(1,N+1):
        if IP[i][1]>0 and IP[i][1]<=tc:#有过期时间和已过期
            if IP[i][0]==1:
                IP[i][0]=0
                IP[i][2]=''
                IP[i][1]=0
            else:
                IP[i][0]=3
                IP[i][1]=0
def StateGetIp(state):
    for i in range(1,N+1):
        if IP[i][0]==state:
            return i
    return 0
def ClientGetIp(client):
    for i in range(1,N+1):
        if IP[i][2]==client:
            return i
    return 0
IP={
   }
for i in range(1,N+1):
    IP[i]=[0,0,'']#第0个是状态,第1个是过期时间,第2个是占用者
#0:未分配 1:待分配 2:占用 3:过期
for i in range(n):
    tc,client,server,ty,ip,te=list(input().split())
    tc,ip,te=list(map(int,[tc,ip,te]))
    if server!=H and server!='*':
        if ty!='REQ':
            continue
    if ty!='DIS' and ty!='REQ':
        continue
    if server=='*' and ty!='DIS' or server==H and ty=='DIS':
        continue
    update(tc)
    if ty=='DIS':
        k=ClientGetIp(client)
        if k==0:
            k=StateGetIp(0)
        if k==0:
            k=StateGetIp(3)
        if k==0:
            continue
        IP[k][0]=1
        IP[k][2]=client
        if te==0:
           IP[k][1]=tc+Tdef 
        else:
            if Tmin<=te-tc<=Tmax:
                IP[k]</
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值