三连击(升级版)
看了各位大佬写的题解,好像没什么人用dfs爆搜,那我这边提供一个吧
这个方法是我得益于Acwing上的一道题 带分数,和这道题很类似
好了,进入正题。
这个题目有很多大牛提供了很多的解法,我想说一下我自己想出来的dfs解法。
定义满足条件的三个数分别为 a a a, b b b, c c c。
首先我们来搜索一下 a a a ,对于每一个满足条件的 a a a ,我们都搜搜索一下对应的 c c c,然后我们我们就可以用满足条件的 a a a 和 c c c,计算出 对应的
b b b ,然后我们再进行题目所需要的的判断就好了。
首先看一下如果搜索 a a a ,当然这就用上最经典的暴力搜法:
void dfs_a(int u,int a)
{
if(u>9)return;//判断条件
if(a>999)return;//判断条件
if(a>100)
dfs_c(u,a,0);//对应的每一个符合条件的 a ,都去找一下 c
for(int i=1;i<=9;i++)//经典暴力搜索
{
if(!st[i])
{
st[i]=1;
dfs_a(u+