关注
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
按照常理来讲应该记忆化搜索比暴力递归的时间要短啊。谁能帮我看一看这个是为什么?
查看原帖
点赞 评论
相关推荐
牛客热帖
更多
正在热议
更多
# 你小心翼翼的闯过多大的祸? #
2624次浏览 61人参与
# 找不到实习会影响秋招吗 #
1399181次浏览 13631人参与
# 实习没事做是福还是祸? #
2906次浏览 52人参与
# 考研人,我有话说 #
156462次浏览 1211人参与
# 2025年终总结 #
131400次浏览 2237人参与
# 重来一次,你会对开始求职的自己说 #
733次浏览 19人参与
# 哪些公司笔/面试难度大? #
7020次浏览 32人参与
# 实习简历求拷打 #
22537次浏览 241人参与
# 携程工作体验 #
18847次浏览 66人参与
# 找不到好工作选择GAP真的丢人吗 #
93603次浏览 1007人参与
# 那些我实习了才知道的事 #
252918次浏览 1784人参与
# 你觉得现在还能进互联网吗? #
29885次浏览 200人参与
# 机械求职避坑tips #
81003次浏览 531人参与
# 第一份工作能做外包吗? #
93941次浏览 599人参与
# 投格力的你,拿到offer了吗? #
154579次浏览 829人参与
# 作业帮求职进展汇总 #
85155次浏览 559人参与
# 秋招遇到的奇葩面试题 #
101200次浏览 416人参与
# 简历当中有水分算不算造假? #
154237次浏览 2250人参与
# 秋招被挂春招仍然能投的公司 #
8895次浏览 111人参与
# 什么样的背景能拿SSP? #
124297次浏览 426人参与
顺丰集团工作强度 369人发布