记忆化搜索(1):P1118 数字三角形——暴力dfs->找规律+最大最小值dfs剪枝

P1118 数字三角形在这里插入图片描述

输入输出样例
输入 #1复制
4 16
输出 #1复制
3 1 2 4

总结目录

1 本题搜索思路
2 本题减少复杂度的两个方法——找规律+过程剪枝

1 本题搜索思路

本题的搜索过程中,是使用类似于全排列的方法dfs。回溯打标记,dfs,去除标记就不再多说了。关键在于返回的条件。一开始按照模拟,我们全部搜索完之后,用一个bool ansIsOk(int n,int targetval) 来验证一个排列解是否合适。验证的过程无非是把数重新加一次,复杂度是n^2,比较和targetval的值。

使用暴力dfs可以得到70%的分数。也比较简单。

2 找规律与过程剪枝

找规律是指最后得到n个数的排列后,我们需要验证他们的和是否为targetval,实际上整个求和的过程是固定的(给定n)时,即系数是一定的。因此我们可以一开始就把系数计算好,利用查表得方式来求取和。这个方法可以将复杂度从n^2降低到n。

除此之外,由于n确定时系数是一定得,因此我们

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值