윤곽선 DP 학습 노트

6110 단어

윤곽선 DP


할 줄 모르다

제목.


POJ2411


제면


1*2의 골패로 N*M의 바둑판을 덮는 방안수

문제풀이


코드는 다음과 같습니다.
#include
#include
#include

using namespace std;

inline int read()
{
    int f=1,x=0;
    char ch;
    do
    {
        ch=getchar();
        if(ch=='-') f=-1;
    }while(ch<'0'||ch>'9');
    do
    {
        x=(x<<3)+(x<<1)+ch-'0';
        ch=getchar();
    }while(ch>='0'&&ch<='9');
    return f*x;
}

int n,m;
int cur;
long long dp[2][1<<17];

inline void calc(int x,int y)
{
    if((y&(1<1<1][x];
}

int main()
{
    while(scanf("%d%d",&n,&m)==2)
    {
        if(n==0&&m==0) return 0;
        if(n<m) swap(n,m);
        memset(dp,0,sizeof(dp));
        cur=0;
        dp[0][(1<1]=1;
        for(int i=0;i)
        {
            for(int j=0;j)
            {
                cur^=1;
                memset(dp[cur],0,sizeof(dp[cur]));
                for(int k=0;k<=(1<1;k++)
                {
                    calc(k,k<<1);
                    if(i&&!(k&(1<1))) calc(k,(k<<1)^(1<1);
                    if(j&&!(k&1)) calc(k,(k<<1)^3);
                }
            }
        }
        cout<1<1]<<endl;
    } 
} 

 
전재 대상:https://www.cnblogs.com/wlzs1432/p/11141223.html

좋은 웹페이지 즐겨찾기