题解 | #小红取数#

小红取数

http://www.nowcoder.com/practice/6a7b2b6c9e3a4f56b1db9f8ca08d889b

import java.io.; import java.util.; public class Main{ //dp代表和 static long[][]dp; static int k; public static void main(String[] args)throws IOException{ BufferedReader br=new BufferedReader(new InputStreamReader(System.in)); PrintWriter pw=new PrintWriter(System.out); String[] str=br.readLine().split(" "); int num=Integer.parseInt(str[0]); int k=Integer.parseInt(str[1]); long[] arr=new long[num+1]; str=br.readLine().split(" "); for(int i=1;i<=num;i++){ arr[i]=Long.parseLong(str[i-1]); } dp=new long [num+10][k]; //要先把表格一些不和法的去掉 求最大值 去掉就是用min_value for(int j=0;j<k;j++){ dp[0][j]=Long.MIN_VALUE; } dp[0][0]=0; for(int i=1;i<=num;i++){ for(int j=0;j<k;j++){

            dp[i][(int)((j+arr[i])%k)]=Math.max(dp[i-1][j]+arr[i],dp[i-1][(int)((j+arr[i])%k)]);
        }
    }
    //这种都是累加和 直接看最后一个就好了!
    if(dp[num][0]>0){
        pw.print(dp[num][0]);

    }else{
        pw.print(-1);
    }
    pw.flush();
    pw.close();
}

}

我居南半坡 文章被收录于专栏

多刷题,积蓄力量,欢迎讨论

全部评论

相关推荐

05-26 22:25
门头沟学院 Java
Java小肖:不会是想叫你过去把你打一顿吧,哈哈哈
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务