1,先按照篮子中鱼的数量排序生成序列ai方便后续计算,并保留映射表,答案输出时逆变换回来。
2, 计算sum = ∑ai ;如果sum <x 无解,退出,sum=x,有唯一解,输出 2^M-1;
2; over= sum-x; 将ai=M找出,生成答案输出 (2^M-1) =2^i;
3,将 ai<over 的映射生成一个序列bi,序列数为N,有可能小于M,可以减轻运算量。ai>over 为答案之中必然之选,输出答案时对应位均为1;
4;最笨的方法如下
for (i=1;i<2N-1;i++)
{
if (【bi】x【i】 ==over)输出答案;
} |