求大佬帮调,40分,输入17的时候就会少一些数

P2089 烤鸡

@[joey1105](/user/1158999) 粗略地看了看,问题可能在 `(i<=add&&((add-i)/(9-k))<=2)&&i<=2` 这里 我要回宿舍了,明天有空再看
by Shen_Linwood @ 2023-11-30 22:06:19


@[Shen_Linwood](/user/480444) 对对对,我当时也觉得这里有问题,但是就是不知道到底怎么错了,谢谢大佬帮我看,感恩
by joey1105 @ 2023-12-01 12:37:43


糟糕,今天也没空 我在打膜你赛,明天再看吧(逃
by Shen_Linwood @ 2023-12-01 19:35:53


好好好,打完了,来看看 ``` 1 7 0 2 7 0 0 3 7 0 0 0 4 7 0 0 0 0 5 7 0 0 0 0 0 6 7 0 0 0 0 0 0 7 7 0 0 0 0 0 0 0 7 7 end 7 6 0 0 0 0 0 0 1 7 6 end 7 5 0 0 0 0 0 0 2 8 5 0 0 0 0 0 0 2 0 8 5 end 8 4 0 0 0 0 0 0 2 1 8 4 end 8 3 0 0 0 0 0 0 2 2 8 3 end 7 5 end 6 7 end 6 6 0 0 0 0 0 1 7 6 0 0 0 0 0 1 0 7 6 end 7 5 0 0 0 0 0 1 1 8 5 0 0 0 0 0 1 1 0 8 5 end 8 4 0 0 0 0 0 1 1 1 8 4 end 8 3 0 0 0 0 0 1 1 2 8 3 end 7 5 end 7 4 0 0 0 0 0 1 2 8 4 0 0 0 0 0 1 2 0 8 4 end 8 3 0 0 0 0 0 1 2 1 8 3 end 8 2 0 0 0 0 0 1 2 2 9 2 0 0 0 0 0 1 2 2 0 10 0 0 0 0 0 0 1 2 2 0 2 9 2 end 9 1 0 0 0 0 0 1 2 2 1 10 0 0 0 0 0 0 1 2 2 1 1 9 1 end ``` 在 `find()` 开头输出 `k`、`add` 和 `temp[]`,在结尾输出 `k`、`add` 和 `"end"`
by Shen_Linwood @ 2023-12-01 21:59:06


哦,我明白了 观察到 ``` 7 7 0 0 0 0 0 0 0 7 7 end ``` 这说明代码在 `find(7,7)` 里面,`i=0` 时就退出了循环
by Shen_Linwood @ 2023-12-01 22:06:45


欸好像没毛病
by Shen_Linwood @ 2023-12-01 22:10:29


但是它到 `find(7,6)` 的时候确实出了毛病,它在 $i=0$ 时退出了循环
by Shen_Linwood @ 2023-12-01 22:12:44


我们想让它做什么呢? 在 `find[]` 为 `0 0 0 0 0 0 1` 时,下一个数可以取 `2`,即 `2 2 2`,这样是满足条件的 但是在 $i=0$ 时循环就退出了,没有考虑 $i=2$ 的情况
by Shen_Linwood @ 2023-12-01 22:15:44


所以,应该倒序循环 然后应该就没问题了(
by Shen_Linwood @ 2023-12-01 22:16:28


``` ((add-i)/(9-k))<=2 ``` 这个应该放在for条件外面,啊啊啊啊谢谢谢谢,我看了你说的一下就明白了,太感谢了,大佬是怎么debug的,感觉有方法的样子,好高效啊
by joey1105 @ 2023-12-02 16:55:52


|