4道题有1个小时花在第一题,就a了一道第二题。。。。 结果出来一看,除个2就好了,我人都傻了。 话说为什么我第一题用动态规划做一直报数组越界,我没看出来有啥问题啊 请教一下万能的网友 public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int[] a = new int[n]; int m = 0; long max = 0; for(int i=0;i<n;i++){ a[i] = sc.nextInt(); if(a[i] > m){ m = a[i]; } } if(m < 5){ for(int i=0;i<n;i++){ if(a[i] == 4){ max += 2; }else if(a[i] == 1){ continue; }else { max += 1; } } }else { int[] dp = new int[m+1]; dp[0] = 0; dp[1] = 0; dp[2] = 1; dp[3] = 1; for(int i=4;i<=m;i++){ dp[i] = Math.max(dp[i-2]+1,dp[i-3]+1); } for(int i=0;i<n;i++){ max += dp[a[i]]; } } System.out.println(max); }
全部评论
(0) 回帖