Notice
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- Unity
- networkbehaviourid
- 몬스터
- 유니티 해상도 설정
- 깃허브 데스크탑 합치기
- unity git
- M590
- unity merge
- networkobject.networkid
- 유니티
- nav오브젝트사이거리
- m585 수리
- unity 병합
- NavMesh
- m585
- githubdesktopmerge
- 깃허브 데스크탑 병합
- networkobject
- 오브젝트 깜빡임
- nav거리
- 유니티 머지
- 유니티 합치기
- 유니티 해상도 변경
- navigation
- Github DeskTop Merge
- 유니티 해상도
- 유니티 브랜치 merge
- stateauthority
- m590 수리
Archives
- Today
- Total
집게사장의 꿈
백준 C# 평범한배낭 12865 본문
해결
배낭의 값은 연속된 값을 가지고, 이전의 최대값의 모든 경우의 수를 가지고 있어야 한다.
그렇기에, 모든 값을 얻기 위해서는 값에 대해 기록을 해야된다.
코드
string[] str = Console.ReadLine().Split();
int n = int.Parse(str[0]);//최대 개수
int w = int.Parse(str[1]);//최대 무게
// 무게와 개수만큼의 수를 가진다.
int[,] info = new int[n + 1, w + 1];
//각 순번의 무게와 가치를 더한다.
int[] weight = new int[n];
int[] value = new int[n];
//값들을 받아온다.
for (int i = 0; i < n; i++)
{
str = Console.ReadLine().Split();
weight[i] = int.Parse(str[0]);
value[i] = int.Parse(str[1]);
}
for (int i = 1; i < n + 1; i++)
{
for (int j = 0; j < w + 1; j++)
{
//현재 무게를 판단하여 무게를 저장한다.
if (weight[i - 1] <= j)
{
//최대로 큰 가치를 대입한다.
info[i, j] = Math.Max(info[i - 1, j], value[i - 1] + info[i - 1, j - weight[i - 1]]);
}
else
{
//무게가 초과된다면 이전에 큰 가치를 가져온다.
info[i, j] = info[i - 1, j];
}
}
}
Console.WriteLine(info[n, w]);
'기타 > 백준' 카테고리의 다른 글
백준 C# 좌표정렬하기 11650 (0) | 2024.08.28 |
---|---|
백준 C# 10814 나이순 정렬 (0) | 2024.08.28 |
백준 C# LCS 9251 (1) | 2024.08.15 |
백준 C# 1916 최소비용 구하기 (0) | 2024.08.10 |
백준 C# 9019 DSLR (0) | 2024.08.08 |