zoukankan      html  css  js  c++  java
  • 【搜索】Fliptile

    #include<stdio.h>
    #include<stdlib.h>
    #include<string.h> 
    
    const int maxn=20;  
    const int inf=210000;  
    typedef long long ll;  
    int m,n;  
    int opt[maxn][maxn];  
    int a[maxn][maxn];  
    int tmp[maxn][maxn];  
    int dx[]= {0,0,1,-1,0};  
    int dy[]= {-1,1,0,0,0};  
    int getcolor(int x,int y)  
    {  
        int ans=a[x][y];  
        for(int i=0; i<5; i++)  
        {  
            int xx=x+dx[i];  
            int yy=y+dy[i];  
            if(xx>=0&&xx<m&&yy>=0&&yy<n)  
                ans+=tmp[xx][yy];  
        }  
        return ans%2;  
    }  
      
    int cal()  
    {  
        int i,j;  
        for(i=1; i<m; i++)  
            for(j=0; j<n; j++)  
                if(getcolor(i-1,j))  
                    tmp[i][j]=1;  
      
        for(i=0;i<n;i++)  
            if(getcolor(m-1,i))return -1;  
      
        int ans=0;  
        for(i=0;i<m;i++)  
            for(j=0;j<n;j++)  
            ans+=tmp[i][j];  
        return ans;  
    }  
      
    void solve()  
    {  
        int rec=-1;  
        int i,j;  
        for(i=0;i<1<<n;i++)  
        {  
            memset(tmp,0,sizeof(tmp));  
            for(j=0;j<n;j++)  
            {  
                tmp[0][n-j-1]=i>>j&1;  
            }  
            int num=cal();  
            if(num>=0&&(rec>num||rec<0))  
            {  
                rec=num;  
                memcpy(opt,tmp,sizeof(tmp));  
            }  
        }  
        if(rec<0)  
            printf("IMPOSSIBLE
    ");  
        else  
        {  
            for(i=0;i<m;i++)  
            {  
                for(j=0;j<n;j++)  
                printf("%d%c",opt[i][j],j==n?'
    ':' ');  
                printf("
    ");  
            }  
      
        }  
    }  
      
      
    int main()  
    {  
        int  i,j,t,k;  
        while(~scanf("%d%d",&m,&n))  
        {  
            for(i=0; i<m; i++)  
                for(j=0; j<n; j++)  
                    scanf("%c",&a[i][j]); 
            solve();  
        }  
        return 0;  
    }  
  • 相关阅读:
    AJPFX总结hashmap和hashtable的区别
    AJPFX分享JAVA修饰符详解
    AJPFX分享java排序之希尔排序
    Mysql框架---HMySql
    html/css实现聊天布局
    Java连接Mysql
    微信小程序九宫格布局
    Android设计模式——MVP
    iOS与H5交互(WKWbebView)
    iOS MJExtension的使用
  • 原文地址:https://www.cnblogs.com/KID-XiaoYuan/p/6392125.html
Copyright © 2011-2022 走看看