【BZOJ 1647】[Usaco2007 Open]Fliptile 翻格子游戏 模拟、搜索

第一步我们发现对于每一个格子,我们只有翻和不翻两种状态,我们发现一旦确定了第一行操作,那么第二行的操作也就随之确定了,因为第一行操作之后我们要想得到答案就得把第一行全部为0,那么第二行的每一个格子的操作都会对应于其上的格子的改变,而且也只有第二行能救他了。因此我们只要知道第一行的操作其他的就全都可以推知了,于是我们就用状压枚举第一行的操作,因为这是天然字典序。

#include <cstdio>
#include <iostream>
using namespace std;
int A[20],n,m,a[20],full,b[20],ANS[20],god,Ans=0x7fffffff;
int main(){
  scanf("%d%d",&m,&n);
  full=(1<<n)-1;
  for(register int i=1,x;i<=m;i++){
    for(register int j=1;j<=n;j++)
      scanf("%d",&x),a[i]|=(x<<(n-j));
  }
  if(n==1)
  {
    b[1]=1;
  }
  else
  {
    b[1]=3;
    for(register int i=2;i<n;i++)
     b[i]=(1<<i)|(1<<(i-1))|(1<<(i-2));
    b[n]=(1<<(n-1))|(1<<(n-2));
  }
  for(register int k=0;k<=full;k++)
  {
    register int now=a[1],p=k,sum=0;
    A[1]=k;
    for(register int i=1;i<=n;i++)
      if(k&(1<<(i-1)))now^=b[i],sum++;
    p=now;
    for(register int i=2;i<=m;i++)
    {
      now=a[i];
      A[i]=p;
      for(register int j=1;j<=n;j++)
        if(A[i-1]&(1<<(j-1)))now^=(1<<(j-1));
      for(register int j=1;j<=n;j++)
        if(p&(1<<(j-1)))now^=b[j],sum++;
      p=now;
    }
    if(!p)
    {
      god=1;
      if(sum<Ans)
      {
        for(register int i=1;i<=m;i++)ANS[i]=A[i];
        Ans=sum;
      }
    }
  }
  if(god)
  {
    for(int i=1;i<=m;i++)
    {
      for(int j=n;j>0;j--)
      {
        if(ANS[i]&(1<<(j-1)))
          printf("1 ");
        else
          printf("0 ");
      }
      puts("");
    }
    return 0;
  }
  printf("IMPOSSIBLE");
}

 

转载于:https://www.cnblogs.com/TSHugh/p/7288897.html

【资源介绍】 1、该资源包括项目的全部源码,下载可以直接使用! 2、本项目适合作为计算机、数学、电子信息等专业的课程设计、期末大作业和毕设项目,也可以作为小白实战演练和初期项目立项演示的重要参考借鉴资料。 3、本资源作为“学习资料”如果需要实现其他功能,需要能看懂代码,并且热爱钻研和多多调试实践。 图像数据处理工具+数据(帮助用户快速划分数据集并增强图像数据集。通过自动化数据处理流程,简化了深度学习项目的数据准备工作).zip 图像数据处理工具+数据(帮助用户快速划分数据集并增强图像数据集。通过自动化数据处理流程,简化了深度学习项目的数据准备工作).zip 图像数据处理工具+数据(帮助用户快速划分数据集并增强图像数据集。通过自动化数据处理流程,简化了深度学习项目的数据准备工作).zip 图像数据处理工具+数据(帮助用户快速划分数据集并增强图像数据集。通过自动化数据处理流程,简化了深度学习项目的数据准备工作).zip 图像数据处理工具+数据(帮助用户快速划分数据集并增强图像数据集。通过自动化数据处理流程,简化了深度学习项目的数据准备工作).zip 图像数据处理工具+数据(帮助用户快速划分数据集并增强图像数据集。通过自动化数据处理流程,简化了深度学习项目的数据准备工作).zip 图像数据处理工具+数据(帮助用户快速划分数据集并增强图像数据集。通过自动化数据处理流程,简化了深度学习项目的数据准备工作).zip 图像数据处理工具+数据(帮助用户快速划分数据集并增强图像数据集。通过自动化数据处理流程,简化了深度学习项目的数据准备工作).zip
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值