14:Flip Game

#include<iostream>
#include<string>
using namespace std;
int a[5][5];int b[5][5];
#define rep(i,j,k) for(int i=j;i<=k;i++)
int n=4;
string s[20];
void update(int i,int j)
{
    b[i][j]=1-b[i][j];
    b[i-1][j]=1-b[i-1][j];
    b[i+1][j]=1-b[i+1][j];
    b[i][j-1]=1-b[i][j-1];
    b[i][j+1]=1-b[i][j+1];
}
int judge(int x,int flag)
{
    rep(i,1,n) rep(j,1,n) b[i][j]=a[i][j];
    int sum=0;
    rep(i,1,n)
    {
        if(x%2)
        {
            update(1,i);
            sum++;
        }
        x/=2;
    }
    rep(i,1,n-1)
    rep(j,1,n)
    {
        if(b[i][j]==flag)
        {
            update(i+1,j);
            sum++;
        }
    }
    rep(i,1,n)
    if(b[n][i]==flag)
    return 300;
    return sum;
}
int main()
{
    rep(i,1,n)
    {
        string tmp;
        cin>>tmp;
        s[i]=" "+tmp;
    }
    rep(i,1,n)
    {
        rep(j,1,n)
        if(s[i][j]==‘w‘)
        a[i][j]=0;
        else
        a[i][j]=1;
    }
    int maxnum=300;
    rep(i,0,(1<<n)-1)
    {
        maxnum=min(maxnum,judge(i,1));
        maxnum=min(maxnum,judge(i,0));
    }
    if(maxnum==300) cout<<"Impossible";
    else cout<<maxnum;
} 
时间: 2024-10-13 05:41:29

14:Flip Game的相关文章

POJ1753:Flip Game

Flip Game Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 29713   Accepted: 12876 Description Flip game is played on a rectangular 4x4 field with two-sided pieces placed on each of its 16 squares. One side of each piece is white and the

编写高质量代码改善C#程序的157个建议——建议14: 正确实现浅拷贝和深拷贝

建议14: 正确实现浅拷贝和深拷贝 为对象创建副本的技术称为拷贝(也叫克隆).我们将拷贝分为浅拷贝和深拷贝. 浅拷贝 将对象中的所有字段复制到新的对象(副本)中.其中,值类型字段的值被复制到副本中后,在副本中的修改不会影响到源对象对应的值.而引用类型的字段被复制到副本中的是引用类型的引用,而不是引用的对象,在副本中对引用类型的字段值做修改会影响到源对象本身. 深拷贝 同样,将对象中的所有字段复制到新的对象中.不过,无论是对象的值类型字段,还是引用类型字段,都会被重新创建并赋值,对于副本的修改,不

转:关于C++14:你需要知道的新特性

关于C++14:你需要知道的新特性 遇见C++ Lambda C++14 lambda 教程 C++11 lambda表达式 C++标准库:使用 std::for_each std::generate C++“准”标准库Boost学习指南(10):Boost.Lambda

Effective C++:条款14:在资源管理类中小copying行为

(一) 上一条款说的auto_ptr和tr1::share_ptr适合于heap-based的资源,然而并不是所有资源都是heap-based的.换句话说并不是tr1::shared_ptr 和 auto_ptr 永远适合做为资源的管理者.所以有时难免还是需要实现自己的资源管理类型. 假设Mutex类型通过lock和unlock两组函数进行互斥器的锁定和解锁,可能我们希望和auto_ptr一样的行为,在某个智能类型析构时主动调用unlock进行解锁.比如下面的代码: void lock(Mute

python基础教程_学习笔记14:标准库:一些最爱——re

标准库:一些最爱 re re模块包含对正则表达式的支持,因为曾经系统学习过正则表达式,所以基础内容略过,直接看python对于正则表达式的支持. 正则表达式的学习,见<Mastering Regular Expressions>(精通正则表达式) re模块的内容 最重要的一些函数 函数 描述 compile(pattern[,flags]) 根据包含正则表达式的字符串创建模式对象 search(pattern,string[,flags]) 在字符串中寻找模式 match(pattern,st

Skype For Business 2015实战系列14:创建Office Web App服务器场

Skype For Business 2015实战系列14:创建Office Web App服务器场 前面的操作中我们已经成功的安装了Office Web App Server,今天我们将创建Office Web App服务器场.具体步骤如下: 配置证书: 登陆到OWA服务器,打开服务器管理器,点击"工具"-"IIS管理器": 双击证书: 点击创建域证书: 输入通用名称及基本信息,点击下一步: 选择证书颁发机构并设置友好名称,点击完成: 完成以后我们的OWA使用的证

Ext.Net学习笔记14:Ext.Net GridPanel Grouping用法

Ext.Net学习笔记14:Ext.Net GridPanel Grouping用法 Ext.Net GridPanel可以进行Group操作,例如: 如何启用Grouping功能呢?只需要在GridPanel中添加一行配置节点: <Features> <ext:GridFilters ID="GridFilters1" runat="server" Local="true"> <Filters> <ex

Android技术14:Android中layout_weight属性解析

为了更好的对空间进行布局,在LinearLayout中使用layout_weight,然后对于这一属性,在有些书上或者Android的初学者直接认为layout_weight值越大,控件权重就越大,所占用的空间就越大或者layout_wight值越小,控件空间就越大.这两种都是片面的,没有真正认识到layout_weight含义以及如何布局.下面首先演示使用代码为什么会有这两种感觉. 1.演示权重成反比 LinearLayout设置水平布局,然后里面空间宽度为fill_parent,layout

Tips 14:思维导图读书笔记法

Tips 14:思维导图读书笔记法作读书笔记不仅能提高阅读书.文的效率,而且能提高科学研究和写作能力.读书笔记一般分为摘录.提纲.批注.心得几种,这里特别推荐思维导图式的读书笔记. 通过思维导图先大概划分出一个整体的框架,专业书可以按章做,先把每一章的重点总结出来.针对某个细节,书中说可能会非常精彩,这时把书中的部分内容摘录做成读书笔记.刚开始时是记录要点,在后期整理时会加上一些自己的想法和阅读时的心得.有时会单独把心得和想法做成单独的思维导图,把这些想法从新汇总.提练之后会非常有价值. 第一遍