zoukankan      html  css  js  c++  java
  • poj2965

    #include<stdio.h>
    #include<string.h>
    #include<iostream>
    using namespace std;
    int a[4][4];
    int x[17]= {0},X[17]= {0};
    int y[17]= {0},Y[17]= {0};
    int d=0,e=-1;
    void build()
    {
        memset(a,0,sizeof(a));
        for(int i=0; i<4; i++)
        {
            for(int j=0; j<4; j++)
            {
                if(getchar()=='-')
                    a[i][j]=1;
            }
            getchar();
        }
    }
    void filp(int s)
    {
        int x=s/4;
        int y=s%4;
        for(int i=0; i<4; i++)
            a[x][i]=!a[x][i];
        for(int j=0; j<4; j++)
            a[j][y]=!a[j][y];
        a[x][y]=!a[x][y];
    }
    bool complete()
    {
        for(int i=0; i<4; i++)
        {
            for(int j=0; j<4; j++)
            {
                if(a[i][j]!=1)
                    return false;
            }
        }
        return true;
    }
    void dfs(int s,int b)
    {
        if(complete())
        {
            if(e<d)
            {
                for(int i=0; i<d; i++)
                {
                    X[i]=x[i];
                    Y[i]=y[i];
                }
                e=d;
            }
            return;
        }
        if(s>=16)
            return;
        dfs(s+1,b);
        filp(s);
        x[d]=s/4+1;
        y[d]=s%4+1;
        d++;
        dfs(s+1,b+1);
        filp(s);
        d--;
        return;
    }
    int main()
    {
        build();
        dfs(0,0);
        printf("%d\n",e);
        for(int i=0; i<e; i++)
            printf("%d %d\n",X[i],Y[i]);
        return 0;
    }
    

      

      

  • 相关阅读:
    0827IO作业
    0927集合作业
    初学集合,以及泛型
    异常课——抛出
    Python环境变量配置
    安装Python
    MySQL多表操作
    MySQL增删改查
    Group by分组详解
    MySQL常用函数
  • 原文地址:https://www.cnblogs.com/lhsghhqgmzy/p/10686665.html
Copyright © 2011-2022 走看看