记忆化搜索实际上是递归来实现的,但是递归的过程中有许多的结果是被反复计算的,这样会大大降低算法的执行效率。
而记忆化搜索是在递归的过程中,将已经计算出来的结果保存起来,当之后的计算用到的时候直接取出结果,避免重复运算,因此极大的提高了算法的效率
代码实例:import java.util.Scanner;
public class Main {
public static final int f[][][] =new int[30][30][30];//开辟一个数组 f[][][],用来存储计算出来的结果
public static void main(String[] args) {
Scanner scanner = new Scanner (System.in);
boolean falg = true;
int a = 0,b = 0,c = 0;
//输入数据
while(falg) {
a = scanner.nextInt();
b = scanner.nextInt();
c = scanner.nextInt();
if(a==-1&&b==-1&&c==-1) {
break;
} else {
System.out.println("w("+a+", "+b+", "+c+") = "+w(a, b, c));
}
}
scanner.close();
}
//记忆搜索(递归)
public static int w(int a,int b,int c) {
if(a20) {
return w(20,20,20);
}else if(f[a][b][c]!=0) {
return f[a][b][c]; //如果之前被计算过,那么直接返回存在数组中的结果;没有计算过的,就进行的计算
}else if(a
关注
打赏
热门博文
- Android --- 异步任务机制之AsyncTask
- Android --- java.lang.SecurityException: Permission Denial: reading androidx.core.content.FileProvi
- Android --- AS启动报错,点什么都点不了com.intellij.ide.plugins.PluginManager(ubuntu)
- Android --- 浅谈下 ImageView 的 setImageLevel 方法走过的坑
- 【数据库系统】- 分布式数据库 - 分片透明、复制透明、位置透明、逻辑透明
- 【数据库原理】闭包与候选码的求法,你掌握技巧了吗?
- UML类图与类的关系详解
- Android --- 文件的创建、写入、读取、压缩操作示例代码
- Android --- 强引用、软引用、弱引用和虚引用
- Android --- Handler 内存泄漏原因及解决方案