爆破算法
爆破算法顾名思义就是通过计算机可以进行大量的重复运算,来让计算机通过不断的实验来得出想要的答案。下面直接通过案介绍一下爆破,算法重在思想,例题如下:
生日蜡烛
某君从某年开始每年都举办一次生日party,并且每次都要吹熄与年龄相同根数的蜡烛。现在算起来,他一共吹熄了236根蜡烛。
请问,他从多少岁开始过生日party的?
请填写他开始过生日party的年龄数。
注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字。
public class Main {
public static void main(String[] args) {
for (int start = 1; start < 236; ++start) {
for (int end = 10; end < 236; ++end) {
if ((end - start + 1) * (end + start) / 2 == 236 && end > start) {
System.out.println("开始吹蜡烛的岁数为:" + start);
System.out.println("结束吹蜡烛的岁数为:" + end);
}
}
}
}
}
这题我们不知道他开始吹蜡烛与结束吹蜡烛的时间,所以我们需要定义俩个变量来表示开始与结束吹蜡烛的年龄,假设我们设开始吹蜡烛的年龄是x,结束吹蜡烛的年龄是y,可得总的方程(y-x+1)(y+x)/2=236,**用for循环来遍历每一个可能的值,最后得到他开始吹蜡烛与结束吹蜡烛的年龄。**
## 总结
1. 在比赛中适用场合
爆破算法虽然简单便利,但是程序时间复杂度较高,而在一般的算法比赛中,程序设计题都是有程序的运行时间规定的,所以爆破一般用在前面的填空题中。
2. 适用的题目类型
题目逻辑简单,一般给定一个或几个条件,然后一般是找二元一次方程,再用for循环来遍历所有可能的值,在循环中加if来找出满足的值即可
## 附
整理的几道爆破算法题,希望对大家认识与理解爆破算法有帮助https://download.csdn.net/download/qq_36310758/10886737