yuanfengyun/q_algorithm

拆分法1,此处是不是有误?

tty8001 opened this issue · 3 comments

函数:
two(int n, int need_gui, int max_gui)
{
...
if (choose_ke) need_gui = need_gui + 1;
else{
if (c1 < 2){
need_gui = need_gui + (2 - c1);
n = n - c1;
}
else{
n = n - 2;
}
if (c2 < 2){
need_gui = need_gui + (2 - c2);
n = n - c2; //应为c2*10?
}
else
{
n = n - 20;
}
}
...
}

n = n - c2; //应为c2*10?

对。

查看了一下,此处虽然是错误,但改不改都不影响。
代码走的此处时,c2只可能是0,c2==1时,choose_ke=true,不会走到此处。
----------还是会走到的。。。但减完后,从高位借了1,低位减完后变成9,阴差阳错,得到了正确结果。

另外,我验证了一下你的算法的正确性,发现绝大部分情况下,算法都是正确的,除了极少数情况,比如:
1022212,只需2个赖子,可计算结果是5