Fliptile POJ - 상압 매거 1층

1905 단어 검색 진급
  • Fliptile

  •  POJ - 3279 
  • 제목:
  • 소는 칸을 밟아서 최소한의 밟는 횟수를 구하고 최소한의 상태에서 각 위치의 밟는 횟수를 출력할 수 있다
  • 사고방식:
  • 1층의 상태를 하나하나 열거하면 아래의 상태를 확정할 수 있다..
  • 역귀 소거도 수정 복구 처리에 주의..
  • #include 
    #include
    #include
    #include
    using namespace std;
    #define maxn 22
    #define inf 0x3f3f3f3f
    #define ll long long
    ll t,n,m,ans,sum=inf;
    char gra[maxn][maxn],mmp[maxn][maxn],out[maxn][maxn],in[maxn][maxn],pr[maxn][maxn];
    void check(int s)
    {
        memcpy(pr,out,sizeof(out));
        for(int i=1; i0)
                        mmp[i][j-1]=='1'?mmp[i][j-1]='0':mmp[i][j-1]='1';
                    if(jm)
            return;
        if(cnt==m)
        {
            memcpy(gra,mmp,sizeof(mmp));
            check(s);
            memcpy(mmp,gra,sizeof(mmp));
            return ;
        }
        out[0][cnt]='0';
        dfs(cnt+1,s);
        out[0][cnt]='1';
        if(mmp[0][cnt]=='1')
        {
            mmp[0][cnt]='0';
            if(cnt>0)
                mmp[0][cnt-1]=='1'?mmp[0][cnt-1]='0':mmp[0][cnt-1]='1';
            if(cnt0)
                mmp[0][cnt-1]=='1'?mmp[0][cnt-1]='0':mmp[0][cnt-1]='1';
            if(cnt0)
                mmp[0][cnt-1]=='1'?mmp[0][cnt-1]='0':mmp[0][cnt-1]='1';
            if(cnt0)
                mmp[0][cnt-1]=='1'?mmp[0][cnt-1]='0':mmp[0][cnt-1]='1';
            if(cnt
     
  • 좋은 웹페이지 즐겨찾기