01 가방 페이지 레이아웃
2365 단어 잡담
단어는 데이터베이스에서 얻어지고 한 단어의 리스트 집합을 얻을 수 있다.그렇다면 리스트에 있는 단어를 모두div에 넣으면div의 크기를 초과할 수 있고, 선택적으로div를 넣으면div의 크기를 어떻게 선택해야 최대한 활용할 수 있는지 문제가 생겼다.div의 개수가 매우 많기 때문에 인공 방법은 가능한 한 고려하지 않는다.만약list의 순서대로div를 넣고 현재 길이를 N에 저장하여 유지보수를 진행한다면, 먼저 길이 2의 요소를 넣고, 두 번째 요소의 길이는 19이다. 이때 다음 줄로 출력해야 합니까? 아니면 계속 적당한 요소를 찾아 첫 줄에서 출력해야 합니까?어떻게 공간 이용의 최대화를 보장합니까?
관객들에게 좋은 방안이 있을지 모르겠지만, 내가 지금 생각할 수 있는 것은 01배낭밖에 없다.유지보수 그룹re[i][j]는 i개의 선택된 단어를 j 길이의div에 넣는 총 단어의 길이를 저장합니다.먼저 1 행위로 예를 들면 두 줄은 첫 번째 줄의 작업을 중복할 수 있다.
i개 단어를 j에 넣은 div의 총 단어 길이는re[i][j],re[i][j]=max{re[i-1][j],re[i-1][j-length[i]]]+length[i]}이다.사람 말로는 i개의 대명사를 j 길이의div에 넣는 총어장=i-1개의 대명사를 j 길이의div에 넣는 총어장과 i-1개의 단어를 j 길이의div에 넣을 때의 총어장+i개의 단어의 길이다.리[i][j]의 상태는 그의 이전 상태와 관련이 있기 때문에 만약에 첫 번째 단어가 들어가지 않았다면 그의 이전 상태는 리[i-1][j]이다. 들어가지 않았기 때문에 전체적인div는 변화할 필요가 없다.만약 i번째 단어를 넣었다면, 이전 상태는 분명히 r[i-1][j-length[i]였다.length[i]는 i번째 단어의 단어 길이입니다.
다음은 코드와 주석입니다. 한 줄의div만 한 경우 두 줄은 다시 한 번 뛰거나 길이의 구조 변화 여부를 판단하여 부분 코드를 다시 뛸 수 있습니다.
package dp;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class Main {
public static void main(String[] args) {
List src = Arrays.asList(new String[]{"good","the","manage","test","for","new","goodIdea","dd","na","sa"});
int clumnNum = 13;
System.out.println(dodp(src, clumnNum));
}
/**re i ,v
* re[i][v] = max{re[i-1][v],re[i-1][v-l[i]]+l[i]}
* @param src
* @param clumnNum
* @return
*/
public static List dodp(List src,int clumnNum){
int[][] re = new int[src.size()+1][clumnNum+1];
for(int i=0;i result = new ArrayList();
for(int i=1;i=src.get(i-1).length()){
int a = re[i-1][j];
int b = re[i-1][j-src.get(i-1).length()]+src.get(i-1).length();
if(a0;k--){
if(re[k][m]>re[k-1][m]){
result.add(src.get(k-1));
m -= src.get(k-1).length();
}
}
return result;
}
}
더 나은 해결책이 있을거야
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Koin원티드나 로켓펀치로 내가 일할 곳은 어디인가 하는 마음으로 경건히 안드로이드 개발자 구직 글을 보다 보면 우대조건에 mvp,mvvm,di,rxjava는 거의 고정이다. (경력은 자격요건에 다 요구) mvvm을 제외하...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.