POJ 3279 Fliptile

链接:http://poj.org/problem?id=3279


上一行的的方块只能通过点击下一行改变


枚举第一行的所有反转方式。 开关问题


#include 
#include
#include
#define MAX_N 20
#define MAX_M 20
using namespace std;

const int dx[5]={-1,0,0,0,1};
const int dy[5]={0,-1,0,1,0};
int M,N;
int tile[MAX_M][MAX_N];
int opt[MAX_M][MAX_N];          //保存最优解
int flip[MAX_M][MAX_N];         //保存中间结果

int get(int x,int y)            //查询 x,y的颜色
{
    int c=tile[x][y];
    for(int d=0;d<5;d++)
    {
        int nx=x+dx[d];
        int ny=y+dy[d];
        if(nx>=0&&ny>=0&&nx>j&1;      //将i的二进制写入flip[0]
        int num=calc();
        if(num>=0&&(res<0||res>num))
        {
            res=num;
            memcpy(opt,flip,sizeof(flip));
        }

    }

    if(res<0)
        cout<<"IMPOSSIBLE"<>M>>N)
    {
        for(int i=0;i>tile[i][j];
        solve();
    }

    return 0;
}


你可能感兴趣的:(POJ 3279 Fliptile)