首页 > 编程知识 正文

阿里巴巴测试题完整版,阿里java面试题

时间:2023-05-04 03:28:47 阅读:34424 作者:1841

主题来源

代码应该考察动态规划,通过推导发现其规律,每次求解的结果可以放入数组中。

未优化:

import java.util.Scanner; public class main { publicstaticvoidmain (字符串[ ] args ) scannersc=newscanner ) system.in ); //T表示有t组数据的int T=sc.nextInt (; for(intI=1; i=T; I ) (/n表示有n个物品int A=sc.nextInt ); int B=sc.nextInt (; int n=sc.nextInt (; longresult=Helper(a,b,n ); system.out.println(result ); }私有状态锁定helper (inta,int b,int n ) ) if(n==0) return 2; if(n==1)返回a; //未优化的长[ ] DP=新长[ n1]; //dp[i]表示x的第I次幂y的第I次幂的和dp[0]=2; dp[1]=a; 双模=1e97; for(intI=2; i dp.length; I ) DP[I]=(long ) () a*DP[I-1]% ) mod )b*DP[I-2]% ) mod ) ) ) mod ) ) ) ) ) ) ) mod ); }返回DP [ n ]; }优化后:

import java.util.Scanner; public class main { publicstaticvoidmain (字符串[ ] args ) scannersc=newscanner ) system.in ); //T表示有t组数据的int T=sc.nextInt (; for(intI=1; i=T; I ) (/n表示有n个物品int A=sc.nextInt ); int B=sc.nextInt (; int n=sc.nextInt (; longresult=Helper(a,b,n ); system.out.println(result ); }私有状态锁定helper (inta,int b,int n ) ) if(n==0) return 2; if(n==1)返回a; //优化在每次求结果时只涉及上次和上次的结果,因此dp保存长度为3的序列即可。 long[] dp1=new long[3]; dp1[1]=2; dp1[2]=a; 双模=1e97; for(intI=2; i=n; I ) { dp1[0]=dp1[1]; dp1[1]=dp1[2]; DP1[2]=(long ) ) (a* dp1 [1] % (mod ) )-(b * dp1 [0] % (mod ) ) (mod ) ) () ) (mod ) ) } }

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。