#S6R02P03. 【例题】超重剪枝的调用数
【例题】超重剪枝的调用数
超重剪枝的调用数
难度:T2
【知识点:搜索与状态】
前置知识:DFS、BFS、数组队列、已学剪枝。
题目描述
按输入顺序对n件正重量物品执行选/不选递归。状态(i,s,c)表示前i件已决定、已选重量s、件数c;初始(0,0,0)。每次进入函数先将calls加1,然后若s>W立即返回。若i==n也返回;否则先调用(i+1,s,c),再调用(i+1,s+w[i],c+1),这里重量下标从0开始。除此之外不加其他剪枝。输出不剪枝完整二选一树的调用数,以及按上述超重剪枝的调用数。进入后立即返回的调用也计数;本题不是输出方案数。
输入格式
第一行n W。第二行n个正重量;n=0时可省略第二行。
输出格式
一行完整调用数和剪枝调用数。
样例输入
2 1
2 3
样例输出
7 5
样例解释
完整树有7次。剪枝后根1次,不选第一件的分支3次,选第一件立刻超重的分支1次,合计5。
数据范围
0≤n≤18,0≤W≤100,1≤w[i]≤100。