POJ 1014 Dividing 문제 해결 & 코드
#include<iostream>
#include<stdio.h>
#include<string.h>
using namespace std;
bool flag;
int T,a[10],dp[60005],tot,now,temp,x;
int main(void)
{
while(true)
{
flag=false;tot=0;now=0;
for(int i=1;i<=6;i++)
{
scanf("%d",&a[i]);
tot+=a[i]*i;
}
if(!tot)break;
if(tot%2)flag=false;
else
{
tot/=2;
memset(dp,0,sizeof(dp));
dp[0]=1;
for(int i=1;i<=6;i++)
{
x=1;
for(;a[i]>0;)
{
for(int k=now;k>=0;k--)
if(dp[k])
{
temp=k+i*min(a[i],x);
if(temp<=tot)
{
dp[temp]=1;
if(temp==tot)
{
flag=true;
break;
}
now=max(now,temp);
}
}
a[i]-=x;x<<=1;
if(flag)break;
}
if(flag)break;
}
}
printf("Collection #%d:
",++T);
if(flag)printf("Can be divided.
");
else printf("Can't be divided.
");
}
return 0;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
깨끗한 것을 보고 싶기 때문에 최적화 함수의 벤치마크에 이용되는 함수의 가시화를 해 보았다결정되지 않음 (자기 만족) 「헤이 이런 거 있어」라고 생각하는 사람 최적화 함수란? 거친 이미지로 1) x + 10 = 25 2) x + 60 = 15 3) x + 45 = 60 의 x를 기계에 구할 때 정확하게 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.