POJ 3254--Corn Field
문제풀이: 동적 기획.
주의: 조건1에서 알 수 있듯이 우리는 가능한 상태를 먼저 열거할 수 있으며 매번 2^N의 상태를 훑어보지 않아도 실제 N=12시에는 377가지 실행 가능한 상태만 있을 뿐이다.
#include
#include
#include
using namespace std;
#define maxP 100000000
class solve
{
private:
int M,N;
int fertile[13];
int num[13][378];
int feasibleState[378];
int stateNum;
public:
solve(int m,int n):M(m),N(n)
{
processIn();
generateState();
printf("%d
",dp());
}
int processIn();
bool IsFeasible(int state);
int generateState();
int dp();
};
int solve::dp()
{
int i,j,k;
int oldState,newState;
memset(num,0,sizeof(num));
num[0][0] = 1;
for(i = 1;i <= M;i++)
{
for(j = 0;j < stateNum;j++)
{
oldState = feasibleState[j];
for(k = 0;k < stateNum;k++)
{
newState = feasibleState[k];
if((newState&fertile[i]) == newState&&(oldState&newState) == 0)
{
num[i][k] = (num[i-1][j]+num[i][k])%maxP;
}
}
}
}
int totNum = 0;
for(i = 0;i < stateNum;i++)
{
totNum = (totNum+num[M][i])%maxP;
}
return totNum;
}
bool solve::IsFeasible(int state)
{
while(state)
{
if((state&3) == 3)
return 0;
state >>= 1;
}
return 1;
}
int solve::generateState()
{
int i,j;
stateNum = 0;
j = 1<
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
제11회 산동성 대학생 프로그램 설계 경연대회 Adventurer's Guild(dp)전송문 제목: 몬스터의 수량 n, 캐릭터의 생명력 H, 캐릭터의 공격 S 건네기;다음 n행, 매 행위 매 몬스터의 혈액량 h, 공격 s, 가치 w; 매번 몬스터를 처치할 때마다 h의 혈액량과 s의 공격을 소모한다. ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.