poj1753 Flip Game(枚举,DFS)

【POJ 1753】Flip Game POJ 753 阅读详情

题意:一个4*4的围棋棋盘,黑白子随机,每次翻转同时翻转四周的棋子,最少翻转几次使所有棋子同色。

代码,非常漂亮的DFS

#include <cstdio>
#include <iostream>
using namespace std;
int map[10][10]={0};//考虑到要不断翻转,我们用0和1代表棋盘黑白两种颜色,这样翻转就可以用“非”运算符来代替了
int dir[5][2]={{-1,0},{1,0},{0,-1},{0,1},{0,0}};
int sum;
bool flag;
void flip(int x,int y)//翻转(x,y)及其相邻点
{
    for(int i=0;i<=4;i++)
      map[x+dir[i][0]][y+dir[i][1]]=!map[x+dir[i][0]][y+dir[i][1]];
    return ;
}
bool judge()//判断棋盘是否单色
{
    int i,j;
    for(i=1;i<=4;i++)
      for(j=1;j<=4;j++)
        if(map[i][j]!=map[1][1])
          return false;
    return true;
}
void dfs(int x,int y,int ans)//ans纪录翻转次数
{
    if(ans==sum)
    {
        flag=judge();
        return ;
    }
    if(flag||x==5) return ;
    flip(x,y);
    if(y<4)  dfs(x,y+1,ans+1);
    else dfs(x+1,1,ans+1);
    flip(x,y);
    if(y<4)  dfs(x,y+1,ans);
    else dfs(x+1,1,ans);
    return ;
}
int main()
{
    int i,j;
    char tmp;
    for(i=1;i<=4;i++)
      for(j=1;j<=4;j++)
      {
          cin>>tmp;
          if(tmp=='w')  map[i][j]=1;//白色记为1,黑色记为0
      }
    for(sum=0;sum<=16;sum++)//枚举16次翻转
    {
        dfs(1,1,0);
        if(flag) break;
    }
    if(flag)  printf("%d\n",sum);
    else puts("Impossible");
    return 0;
}
POJ1753-Flip Game 北大POJ1753-Flip Game 解题报告+AC代码 立即下载

相关推荐

Unity3D 2022版如何一键安装Newtonsoft.Json?最新Package Manager教程

本文详细介绍了在Unity3D 2022及以上版本中,如何通过Package Manager一键安装和配置Newtonsoft.Json(Json.NET)。教程涵盖了从打开Package Manager、搜索并安装正确包源,到验证安装和基础使用的完整流程,旨在帮助开发者以现代化、可靠的方式集成这一强大的JSON处理框架,提升开发效率并规避手动导入的常见问题。

lg888的博客 921

POJ 1753

1753 题是一个基本的枚举算法的题,基本解题思路就是暴力枚举,但是我们需要知道即便是暴力枚举,也是需要认真分析问题的。 题意:有一个4*4的棋盘,棋盘上有黑白格,每一次你可以翻其中的一个格子。一个格子(x,y)如果被翻,它相邻的前后左右四个格子(如果在棋盘上)也要翻转。现在给你一个初始的棋盘状态,问把这个棋盘翻转到全黑或全白的最少次数;若不能达到全黑或全白,输出Impossible。 思路:只有4*4的棋盘,同时格子只有黑白两面。对于同一个格子,翻两次和不翻没有区别。同时,我们会发现,假如第一行的状态已经

Joaniee的博客 1006

机器学习-深嵌交叉验证(Nested Cross-Validation)

Section I: Code and Analyses 第一部分:代码 from sklearn import datasets from sklearn.model_selection import train_test_split from sklearn.preprocessing import StandardScaler from sklearn.svm import SVC from...

Santorinisu Blogs 2716

学习随笔——POJ题目1753:Flip Game解答

本题题目链接:http://poj.org/problem?id=1753 题目截图如下: 题目大意:在4*4棋盘上有黑白子若干,现需要翻动若干次棋盘上的棋子实现棋盘上的棋子全白或全黑。翻动的规则是:当翻动某一棋子时,其上下左右棋子也需被翻动。求翻动的最小次数,如果无法实现,则需要输出提示信息“Impossible”。 一道枚举的题目,根据分析,我们很容易知道同一个位置的棋子翻动两次与未翻动...

starsum的博客 782

NVIDIA-SMI has failed because it couldn‘t communicate with the NVIDIA driver. 最全解决方案!详细!

真的折磨了我整整一天,从网上的资料到GPT都翻遍了,终于是解决了!以下方案希望能帮助到你们。

weixin_44124632的博客 1万+

PHP实战:5分钟搞定SM4国密加密算法集成(附完整代码)

本文提供了一份可直接用于生产环境的PHP SM4国密加密算法集成实战指南。文章详细解析了SM4算法核心,对比了ECB与CBC工作模式,并给出了包含完整代码、密钥管理、数据填充及性能优化的解决方案,帮助开发者快速、安全地在PHP项目中集成国密加密算法。

2a4s6d8f0g的博客 341

POJ——1753(枚举)

题目地址:http://poj.org/problem?id=1753 题意:给出4*4的黑色或白色的方格,要求改变最少的方格使之变成全黑或全白。(改变的时候将会改变自身加和上下左右)。 思路:直接枚举,共有2^16(16个方格,要么改变(用1表示),要么不改变(用0表示)的两种状态)种可能。 源代码: #include using namespace std; int main()

luoshenzhisi 926

10分钟上手YOLOv11:最强姿态估计模型来了,代码开源,效果炸裂!

【10分钟玩转YOLOv11实时姿态估计】🚀 YOLOv11作为YOLO家族最新成员,在速度、精度和易用性上全面升级,尤其适用于姿态估计等复杂视觉任务。本文带您快速掌握: 1️⃣ 核心概念:姿态估计即识别人体17个关键点(如关节部位)并连接成数字骨架,是智能健身、体感游戏等应用的基础。 2️⃣ 技术优势: 超轻量级(最小仅2.9M参数) 极速推理(GPU仅1.7ms) 高精度(COCO mAP@50-95达50%) 3️⃣ 三步实操: ① 安装:pip install ultralytics ② 准备人物

weixin_41246802的博客 1788

POJ1753——DFS+枚举——Flip Game

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 other one is black and each piece is...

dgjm4087的博客 2259

RK3588开发笔记-USB3.0接口调试

RK3588平台是一款强大的处理器,但要充分发挥其性能,需要正确调试其各种接口,包括USB 3.0接口。USB 3.0接口提供了更快的数据传输速度,但也可能面临一些问题。本篇博客将介绍如何在RK3588平台上调试USB 3.0接口,以确保其稳定性和性能。RK3588芯片具有强大的USB资源,包括多个USB接口和高速数据传输能力。RK3588通常具有多个USB接口,包括USB 2.0和USB 3.0。USB 2.0用于低速和全速设备连接,而USB 3.0则用于高速设备连接。

flypig has a dream! 2560

qiankun 主子应用部署教程(Nginx 小白版)

本地开发:不用 Nginx,直接localhost:端口即可。本地模拟线上:用hosts + Nginx + 自定义域名,效果和生产接近。线上部署主应用只要配置 history 模式子应用必须支持 CORS + history + 缓存能跑是因为默认 server 兜底,但推荐写真实域名。主应用 vs 子应用的 Nginx 配置区别为什么本地和线上表现不一样history 模式 + 跨域的最佳实践。

专注于前端开发与实战技巧,记录从零到一的学习与项目经验。分享 Vue3 / JavaScript / TypeScript / Flutter /Uniapp等前端技术,以及 性能优化、工程化、最佳实践。 999

POJ 1753 Flip Game(dfs+枚举)

POJ 1753 题意: 输入一个4*4的图像,由黑白两色组成,定义一种操作为:改变某个格子内小球的颜色(黑变白,白变黑),同时其上下左右的格子内小球也将变色。求最少多少次操作能使之成为纯色图案。 思路: 对一个格子操作偶数次等于没有操作,操作奇数次等于操作一次,所以答案在0~16以及impossible之间。 从n=0开始枚举n次操作可能的组成情况,即操作哪几个格子,若某种组合能变

a novice 848

支付域——账户系统设计

本文详细介绍了支付域中的账户系统设计,包括账户的定义、核心特征、常见类型以及在支付系统中的作用。账户是支付平台为用户、商户等主体建立的资金记录单元,具有资金归属、余额管理、交易流水、资金安全等核心特征。常见账户类型包括用户账户、商户账户、平台账户、保证金账户等。此外,还探讨了账户与银行账户的区别、账户的结构设计、如何设计账户类型以及账户系统设计等内容。

庄小焱 1189

POJ 1753 Flip Game【翻转棋盘+枚举+dfs】

方法:一、枚举(此处所用)           二、用二进制记录下标(尚未实现)          三、类比于玩魔方游戏(思路来自黄超,尚未实现) 原题链接:http://poj.org/problem?id=1753 Flip Game Time Limit: 1000MS   Memory Limit: 65536K Total Submissi

free斩 6661

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

poj1753 Flip Game 【dfs + 暴力枚举】

题意: 给你一个只有黑白棋的4*4的棋盘 你有一种操作 你可以对其中某一个位置的棋子进行翻转 使其变换颜色,而且该棋子上下左右都会进行翻转 请问最少进行几次操作可以使得棋盘颜色一致 如没有就打印“Impossible” 题解: 因为该棋盘只有16个格子, 且每个格子无论翻转多少次,都只有两种状态,而且你对每个位置只有操作和不操作两种选择, 所以 一共会有 2^16 种方案, 所以我...

OOOak 1050

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

poj 1753 : Flip Game (枚举+dfs)

poj 1753 : Flip Game (枚举+dfs) 题意:一个4*4的矩阵,每一格要么是白色,要么是黑色。现在你可以选择任意一个格变成相反的颜色,则这个格的上,下,左,右四个格也会跟着变成相反的色(如果存在的话)。问要把矩阵的所有格子变成同一个颜色,你最少需执行几次上面的操作。   思路:枚举+dfs。一个关键点:对于每一格,只能翻0或1次(易证)。因此枚举就存在2^16 =40

略略略的博客 474

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

POJ 1753 Flip Game (DFS + 枚举)

题目:http://poj.org/problem?id=1753 这个题在开始接触的训练计划的时候做过,当时用的是DFS遍历,其机制就是把每个棋子翻一遍,然后顺利的过了,所以也就没有深究。 省赛前一次做PC2遇到了机会一模一样的题,只不过是把棋盘的界限由4X4改为了5X5,然后一直跑不出结果来,但是当时崔老湿那个队过了,在最后总结的时候,崔老湿就说和这个题一样,不过要枚举第一行进行优化。

顺便A道题 1042

POJ 1753 Flip Game DFS枚举

看题传送门:http://poj.org/problem?id=1753 DFS枚举的应用。 基本上是参考大神的。。。。 学习学习。。 #include #include using namespace std; int n,s,d,ans; bool a[5][5],flag=false; //判断全部一样的情况 bool alllike() { for(int i=0;

细语呢喃 739

POJ 1753 Flip Game(枚举+DFS)

Flip Game Time Limit:1000MS Memory Limit:65536K Total Submissions:17012 Accepted:7377 Description Flip game is played on a rectangular 4x4 field with t...

weixin_30746117的博客 132

poj1753 Flip Game dfs 枚举 待补完 位运算

Flip Game Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 41219   Accepted: 17896 Description Flip game is played on a rectangular 4x4 field with two-sided

kyoma的博客 501

poj 1753 Flip Game (dfs||位运算)

poj 1753 Flip Game 牛客题目 poj题目 题目大意:就是说有一个4*4的棋盘,棋盘上有16个黑白棋子随机摆放b代表黑色棋子,w代表白色棋子,现在我们可以操作这个棋盘改变棋子的颜色使整个棋盘最终都只有一种颜色的棋子,操作就是翻转棋子,白色棋子翻转就是黑色,反之亦然,每次翻转一枚棋子,它的周围四个(上、下、左、右)四枚棋子都要随之翻转,求最小翻转次数,使得最终棋盘上只有一种颜色的棋子。 输出:如果当前已经是符合题目的状态那么不用翻转,直接输出0,如果递归之后还是不能变为符合题目的状态那么输

少年白马 353

POJ1753 Flip Game DFS+枚举

题目大意:有一个4×4的棋盘,棋盘上每一点都有黑白两面,每次可以翻转任意一点,在翻转某一点时,该点上下左右的4个临近点同时也会被翻转,现在问你要使棋盘上所有点的颜色统一所需要的最小翻转次数。 分析:其实这道题是典型的高斯消元,不过我是用DFS来做的。 首先我们知道,对于棋盘上任意一点,翻转偶数次是没有意义的,翻转奇数次和翻转一次是一样的,这就意味着,最大的翻转次数也不会超过4×4=16次,这样

AC_Gibson的专栏 1138

POJ 1753 Flip Game dfs + 枚举

来源:http://poj.org/problem?id=1753 题意:给一个4*4的棋盘,上面有黑色或者白色的棋子。每次可以改变一个方格的棋子,若改变某棋子,则该棋子上下左右和其本身的颜色都要改变。问最少经过多少步的改变,可以变化成颜色都一样。 思路:仔细考虑,可以发现,一个位置的棋子,要么保持原状不变,要么改变一次。因为改变偶数次和不改变的效果是一样的,改变奇数次和改变1次的效果是一样的

1137

poj 1753 Flip Game(枚举,dfs)

先放上我参考的题解:http://blog.youkuaiyun.com/lyy289065406/article/details/6642595看第一眼感觉和poj 3279题差不多,只是目标不一样。poj 3279是要求全部白面向上,直接用循环枚举比较方便。这个题目是要求同一个颜色的面向上,朝上的面就有两种颜色了,如果像3279那个题一样作的话,感觉就要麻烦了一点。于是就看了上边链接大神的题解,恍然大悟阿。

梦幻的蔷薇色 565

POJ-1753-Flip Game【翻转棋盘+枚举+dfs】

【链接】:click here 【题意】: 给你一个4*4棋盘,上面有且仅有白色(w)和黑色(b)两种颜色标记,并且,如果正面是白色,反面则是黑色,反之亦然。 现在让你翻转棋盘,问最少翻转多少次,使得最后棋盘的颜色统一(即全为白色或者全为黑色)。 如果不能翻转成功,则输出Impossible;否则,输出翻转成功的最小次数。 注意:翻转方法,如果你翻转了一个棋盘的

herongwei 的 BLOG 2092

poj1753 Flip Game DFS,枚举

Flip Game Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 34437   Accepted: 15058 Description Flip game is played on a rectangular 4x4 field with two-sided pie

became_a_wolf的专栏 684
上一篇: poj3094 Quicksum(大水题)
下一篇: poj2965 The Pilots Brothers‘ refrigerator (枚举,DFS,回溯)
「已注销」
博客等级 码龄7年 0粉丝 19原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值