题解 1518: 蓝桥杯算法提高VIP-寻找三位数

来看看其他人写的题解吧!要先自己动手做才会有提高哦! 
返回题目 | 我来写题解

筛选

蓝桥杯算法提高VIP-寻找三位数-题解(C++代码)

此题最重要的是解决两个问题:1.要先确定第一个数i的值,这样我们才能发现第二个数和第三个数是否满足题意,因此想到用for循环找i,但是如果从123找到987太复杂了,我们想到这三个数最大也就是987,因此通过比例可以找到i的最大值肯定是987/3=3292.怎么判断这三个数是否重复呢?给大家介绍一种非

蓝桥杯算法提高VIP-寻找三位数-题解(C语言代码)

##解题思路:定义两个大小为10的数组,这个题目主要的是用动态规划来求解。1~9这九个数拼凑成不同的三位数,满足第二个数为第一个数的两倍,第三个数为第二个数的两倍。如果存在,满足就输出最终三个三位数的结果。step初始为0,每次通过step往下进行深搜的时候都会直接搜到最终的基线条件,查看是否满足。

蓝桥杯算法提高VIP-寻找三位数-题解(C++代码)

我利用的是穷举法,但只用了一个for循环,因为剩下的两个数都跟第一个数成倍数关系。而要保证9个数都使用到,那么最小值为123,最大值为987,而987/3=329,那么第一个数的枚举区间就列出来了。所以,接下来的任务就是判断9个数字是否使用完全就可以了,

蓝桥杯算法提高VIP-寻找三位数 (C语言代码)

解题思路:因为:a,b,c三数成比例,且1-9均只能使用一次。所以可以采用遍历的方式,从123遍历到329.遍历之后,验证是否1-9均只使用了一次,是则输出,否则进入下一次循环。这里采用hash表的方式,1-9数字作为key。注意事项:检验hash表时,

蓝桥杯算法提高VIP-寻找三位数 (C语言代码)

摘要:解题思路:第一个三位数是123-329;通过for语句,每次都能确定三个三位数的具体数值,把三个三位数的每个数放入一个数组进行排序,最后判断是否满足1 2 3 4 5 6 7 8 9 注意事项:参考代……