关注
public class SplitMoney { int[][] table = new int[5][3001]; public static void main(String[] args) { int[] arr = new int[]{5,10,25,1}; int aim = 3000;
SplitMoney splitMoney = new SplitMoney(); long time1= System.currentTimeMillis();
System.out.println(splitMoney.splitSearchTable(arr,0,aim)); long time2= System.currentTimeMillis();
System.out.println("search table method time (ms):"+(time2-time1));
time1= System.currentTimeMillis();
System.out.println(splitMoney.splitRecursive(arr, 0, aim));
time2= System.currentTimeMillis();
System.out.println("recursive method time (ms):"+(time2-time1));
} public int splitRecursive(int[] arr,int start,int aim){ if(arr==null|| arr.length==0 || aim<=0){ return 0;
} return splitProcess(arr,start,aim);
} public int splitProcess(int[] arr,int start,int aim){ int sum =0; if(aim==0){ return 1;
} if(start==arr.length){ return 0;
} else{ while(aim>=0){
sum+=splitProcess(arr, start + 1, aim);
aim = aim-arr[start];
}
} return sum;
} public int splitSearchTable(int[] arr,int start,int aim){ if(arr==null|| arr.length==0 || aim<=0){ return 0;
} return splitProcess1(arr, start, aim);
} public int splitProcess1(int[] arr,int start,int aim){ int sum =0; if(aim==0){ table[start][aim]=1; return 1;
} if(start==arr.length){ return 0;
} else{ while(aim>=0){ if(table[start][aim]!=0){
sum += table[start][aim];
} else {
sum += splitProcess1(arr, start + 1, aim);
}
aim -=arr[start];
}
} if(aim>=0){ table[start][aim] = sum;
} return sum;
}
}
分钱的那道题:
为什么我的程序跑出来的结果是:
3681531
search table method time (ms):13912
3681531
recursive method time (ms):3049
按照常理来讲应该记忆化搜索比暴力递归的时间要短啊。谁能帮我看一看这个是为什么?
查看原帖
点赞 评论
相关推荐
查看4道真题和解析 点赞 评论 收藏
分享
点赞 评论 收藏
分享
11-10 15:33
门头沟学院 电子工程师 点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 实习越久越好,还是多多益善? #
4172次浏览 41人参与
# 0经验如何找实习? #
4559次浏览 119人参与
# 百融云创求职进展汇总 #
6843次浏览 95人参与
# 刚工作,应该先搞钱or搞成长? #
2110次浏览 33人参与
# 你找工作经历过哪些骗局? #
2211次浏览 49人参与
# 你开始找寒假实习了吗? #
3636次浏览 66人参与
# 实习必须要去大厂吗? #
163301次浏览 1617人参与
# 25年找工作是什么难度? #
3556次浏览 42人参与
# 离职你会和父母说吗? #
3509次浏览 49人参与
# 一上班就想____,这正常吗? #
905次浏览 25人参与
# 产品每日一题 #
72704次浏览 649人参与
# 你会为了工作牺牲生活吗? #
64676次浏览 438人参与
# 如果公司降薪,你会跳槽吗? #
108742次浏览 676人参与
# 非技术求职现状 #
555764次浏览 3519人参与
# 教师节,你送祝福了吗 #
19951次浏览 95人参与
# 实习,不懂就问 #
135969次浏览 1261人参与
# 今年形式下双非本找得到工作吗 #
260714次浏览 1517人参与
# 每个月的工资都是怎么分配的? #
78320次浏览 659人参与
# 总结:哪家公司面试体验感最差 #
80474次浏览 373人参与
# 2025年终总结 #
26632次浏览 366人参与
# Offer比较,你最看重什么? #
242647次浏览 1502人参与
