0/1 가방 기록 경로
3247 단어 dp 테마
#include
#include
int main()
{
int x,y;
scanf("%d%d",&x,&y);
int w[50];
int val[50];
int dp[50][50];
memset (dp,0,sizeof(dp));
for(int i=1;i<=y;i++)
{
scanf("%d%d",&w[i],&val[i]);
}
int mark[50][50];
memset(mark,0,sizeof(mark));
for(int i=1;i<=y;i++)
for(int j=x;j>=0;j--)
{
dp[i][j]=dp[i-1][j];
if(j-w[i]>=0&&dp[i][j]1][j-w[i]]+val[i])
{
dp[i][j]=dp[i-1][j-w[i]]+val[i];
mark[i][j]=i;
}
}
int max=x;
for(int i=x;i>=0;i--)
{
if(dp[y][i]>=dp[y][max])
max=i;
}
printf("%d
",dp[y][max]);
int path[50];
int q=1;
for(q=y;q>=1;q--)
{
path[q]=mark[q][max];
max=max-w[mark[q][max]];
}
for(int i=1;i<=y;i++)
if(path[i]!=0)
printf("1
");
else
printf("0
");
return 0;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
0/1 가방 기록 경로텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.