检查结果分为如下三种情况(以完成的任务数m=5为例说明):
①安排合理:完成的任务数大于等于m,且执行过程中无重复任务。例如:计划1完成任务的顺序为:任务0→任务6→任务4→任务1→任务5→结束(-1),共安排了5个任务。
②任务不足:完成的任务数小于m。例如:计划2完成任务的顺序为:任务6→任务2→任务0→任务1→结束(-1),只安排了4个任务,出错任务为任务1。
③任务重复:任务安装中存在重复任务。例如:计划3完成任务的顺序为:任务7→任务3→任务5→任务1→任务0→任务3→结束,其中任务3重复,出错任务为任务 0。
import pandas as pd
m = int(input('请输入需完成的最少任务数:'))
df = pd.read_excel('task.xlsx')
name = list(df.columns[2:]) #取任务名称
plan = list(df.计划号) #取计划号
task = list(df.values)
#task 中的保存 df 中的数据,不含标题。格式如图b所示
for i in range(len(task)):
head = task[i][1]
stat,k = check_up(link,head)
if stat == 2:
print(plan[i],':安排合理,共完成',k,'项任务')
elif :
print(plan[i],':任务重复,出错任务为',name[k])
else:
print(plan[i],':任务不足,出错任务为',name[k])
def check_up(link,head):
cnt=1
p=link[head]
pre=p
while p!= -1 and p not in finished:
finished.append(p)
pre = p
cnt+=1
if p==-1:
if cnt<m:
return 1,pre
else:
return 2,cnt
elif p in finished:
return 0,pre