虫食算
题目链接:虫食算
感谢 @ l z h @lzh @lzh 大佬的帮助
题目描述


解题思路
很明显这是一道深搜题 (不然它怎么会归到深搜专栏里呢) 。
可以搜索枚举每一个字母来寻找最佳答案。
但这样是 O ( 1 0 n ) O(10^n) O(10n) 的时间复杂度,肯定是过不了的,所以要加入剪枝。
如果当前情况已经不合法了,自然不能搜下去。
那么现在关键在于 c h e c k ( ) check() check() 函数。
如果当前位三个数都被搜到过了,那么直接判断即可。但如果上一位有数未知,那么最多还可以对这一位贡献 1 1 1 。
最后一位要特判:无论是进位或者不等都是不合法的。
code
#include<iostream>
#include<cstdio>
#include<string>
#include<cstring>
using namespace std;
int n,tot,ok;

博客介绍了虫食算问题,通过深搜解决,强调了在O(10n)时间复杂度无法通过的情况需要加入剪枝策略。解题思路中提到,当当前状态不合法或者某个位置的三个数都已被搜索时,应停止搜索,并对最后一位进行特判处理。
最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



