本人电子系,只为一学生。心喜计算机,小编以怡情。
共用6116ms,一度以为超时。
static public int backPack(int m, int[] A) {
// write your code here
int visited[][]=new int[A.length+1][m+1];
for(int i=1;i<visited.length;i++)
for(int j=1;j<visited[0].length;j++)
if(i-1>=0&&j-A[i-1]>=0)
{
visited[i][j]=Math.max(getmax(visited, j,i), getmax(visited, j-A[i-1], i)+A[i-1]);
if (visited[i][j]==m) {//没有这条语句会超时
return m;
}
}
return getmax(visited, visited[0].length-1, visited.length);
}
static int getmax(int visited[][],int j,int hang)
{
int max=0;
for(int i=0;i<hang;i++)
{
max=max>visited[i][j]?max:visited[i][j];
}
return max;
}