POJ 1753 Flip Game(回溯)

文章目录

    • 1. 题目
      • 1.1 题目链接
      • 1.2 题目大意
      • 1.3 解题思路
    • 2. 代码
      • 2.1 Wrong Answer代码
      • 2.2 Accepted代码

1. 题目

1.1 题目链接

http://poj.org/problem?id=1753

1.2 题目大意

一个黑白棋子的棋盘,一个反过来周围四个也跟着反过来(如果存在的话),颜色取反,问最少反转次数使得颜色全白或者全黑,不存在解的话输出信息。

1.3 解题思路

采用回溯算法,暴力枚举

2. 代码

2.1 Wrong Answer代码

/*** @description: * @author: michael ming* @date: 2019/7/11 22:09* @modified by: */
#include <iostream>
#include <string>
using namespace std;
bool a[4][4];
bool isok()//判断是否都是同种颜色
{int i, j;for(i = 0; i < 4; ++i){for(j = 0; j < 4; ++j){if(a[i][j] != a[0][0]){return false;}}}return true;
}
void flipAndUpdate(int r, int c)//翻转r,c处及其周围棋子
{a[r][c] = !a[r][c];if(r-1 >= 0)a[r-1][c] = !a[r-1][c];if(r+1 < 4)a[r+1][c] = !a[r+1][c];if(c-1 >= 0)a[r][c-1] = !a[r][c-1];if(c+1 < 4)a[r][c+1] = !a[r][c+1];
}
void flip(int r, int c,int curstep, long &minstep)
{if(isok()){if(curstep < minstep)minstep = curstep;return;}if(c+1 < 4)flip(r,c+1,curstep,minstep);else if(c+1 == 4 && r+1 < 4)flip(r+1,0,curstep,minstep);flipAndUpdate(r,c);curstep++;if(c+1 < 4)flip(r,c+1,curstep,minstep);else if(c+1 == 4 && r+1 < 4)flip(r+1,0,curstep,minstep);flipAndUpdate(r,c);//翻完了,还要复原?
}
int main()
{string s;int i, j;long minstep = 65536;for(i = 0; i < 4; ++i){cin >> s;for(j = 0; j < 4; ++j){if(s[j] == 'b')a[i][j] = 1;elsea[i][j] = 0;}}flip(0,0,0,minstep);if(minstep == 65536)cout << "Impossible" << endl;elsecout << minstep;return 0;
}

2.2 Accepted代码

在这里插入图片描述
上面代码范围有问题,改动如下
在这里插入图片描述
AC 代码如下

/*** @description: * @author: michael ming* @date: 2019/7/11 22:09* @modified by: */
#include <iostream>
#include <string>
using namespace std;
bool a[5][5];
bool isok()//判断是否都是同种颜色
{int i, j;for(i = 0; i < 4; ++i){for(j = 0; j < 4; ++j){if(a[i][j] != a[0][0]){return false;}}}return true;
}
void flipAndUpdate(int r, int c)//翻转r,c处及其周围棋子
{a[r][c] = !a[r][c];if(r-1 >= 0)a[r-1][c] = !a[r-1][c];if(r+1 < 4)a[r+1][c] = !a[r+1][c];if(c-1 >= 0)a[r][c-1] = !a[r][c-1];if(c+1 < 4)a[r][c+1] = !a[r][c+1];
}void flip(int r, int c,int curstep, long &minstep)
{if(isok()){if(curstep < minstep)minstep = curstep;return;}if(r == 4)return;if(c+1 < 4)flip(r,c+1,curstep,minstep);else if(c+1 == 4)flip(r+1,0,curstep,minstep);flipAndUpdate(r,c);curstep++;if(c+1 < 4)flip(r,c+1,curstep,minstep);else if(c+1 == 4)flip(r+1,0,curstep,minstep);flipAndUpdate(r,c);//翻完了,还要复原?
}
int main()
{string s;int i, j;long minstep = 65536;for(i = 0; i < 4; ++i){cin >> s;for(j = 0; j < 4; ++j){if(s[j] == 'b')a[i][j] = 1;elsea[i][j] = 0;}}flip(0,0,0,minstep);if(minstep == 65536)cout << "Impossible" << endl;elsecout << minstep;return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/480115.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

他读书时挣了五十万,找工作时收获阿里腾讯快手等ssp offer

今天介绍一位dalao&#xff0c;他之前在中科院获取了计算机硕士学位&#xff0c;现在是一名大厂的算法工程师。大多数人的学生生活&#xff0c;是在枯燥的课程和任务中度过的&#xff0c;但他却有所不同&#xff0c;乐于折腾&#xff0c;收获了不一样的精彩。他喜欢去公司实习&…

Java多线程系列(三):Java线程池的使用方式,及核心运行原理

之前谈过多线程相关的4种常用Java线程锁的特点&#xff0c;性能比较、使用场景&#xff0c;今天主要分享线程池相关的内容&#xff0c;这些都是属于Java面试的必考点。 为什么需要线程池 java中为了提高并发度&#xff0c;可以使用多线程共同执行,但是如果有大量线程短时间之内…

论文浅尝 | 图神经网络综述:方法及应用

论文链接&#xff1a;https://arxiv.org/pdf/1812.08434.pdfGNN相关论文列表链接&#xff1a;https://github.com/thunlp/GNNPapers近日&#xff0c;清华刘知远老师组在arXiv上发表了一篇关于图神经网络的综述&#xff0c;本次论文浅尝在分享这篇论文的基础上&#xff0c;对图神…

论文笔记(Social Attentional Memory Network:Modeling Aspect- and Friend-level Differences in Recom-)

社交注意记忆网络&#xff1a;模拟面级别和朋友级别的区别 原文链接&#xff1a;Social Attentional Memory Network: Modeling Aspect- and Friend-Level Differences in Recommendation, WSDM’19 1. 摘要 社会中的连接有助于提升推荐系统的性能&#xff0c;但是&#xff…

玩转算法之面试-第六章(栈和队列)

leetcode 20 此时栈顶的左括号和当前遍历的右括号匹配&#xff0c;故将左括号从栈顶pop出。 leetcode 150&#xff1a; leetcode 71 栈和递归的关系 递归算法&#xff1a;二叉树中的算法 、二叉树的前序遍历&#xff0c;中序遍历&#xff0c;后序遍历 前序遍历代码&am…

POJ 1321 棋盘问题(回溯)

文章目录1. 题目1.1 题目链接1.2 题目大意1.3 解题思路2. 代码2.1 Accepted 代码1. 题目 1.1 题目链接 http://poj.org/problem?id1321 1.2 题目大意 在一个给定形状的棋盘&#xff08;只能在#号的位置摆放&#xff09;上面摆放棋子&#xff0c;棋子没有区别。要求摆放时任…

Java多线程系列(二):线程的五大状态,以及线程之间的通信与协作

在Java面试的时候&#xff0c;经常会问到Java并发编程相关的多线程、线程池、线程锁、线程通信等面试必考点&#xff0c;比如&#xff1a; Java并发编程系列&#xff1a;Java线程池的使用方式&#xff0c;核心运行原理、以及注意事项 Java并发编程系列&#xff1a;4种常用Jav…

负样本为王:评Facebook的向量召回算法

星标/置顶小屋&#xff0c;带你解锁最萌最前沿的NLP、搜索与推荐技术有人的地方就会有江湖&#xff0c;就会有鄙视链存在&#xff0c;推荐系统中也不例外。排序、召回&#xff0c;尽管只是革命分工不同&#xff0c;但是我感觉待遇还是相差蛮大的排序排序&#xff0c;特别是精排…

论文浅尝 | TEQUILA: 一种面向时间信息的知识问答方法

来源&#xff1a;CIKM’18链接&#xff1a;http://delivery.acm.org/10.1145/3270000/3269247/p1807-jia.pdf?ip223.3.116.39&id3269247&accACTIVE%20SERVICE&keyBF85BBA5741FDC6E%2EEEBE655830483280%2E4D4702B0C3E38B35%2E4D4702B0C3E38B35&__acm__15478819…

京东2020算法工程师0824笔试题整理

代码题&#xff1a; 1&#xff1a;开心消消乐&#xff1a; #include #include #include #include #include #include #include #define ll long long #define inf 0x3f3f3f3f #define Max 1001 using namespace std; int dir[4][2]{{-1,0},{1,0},{0,-1},{0,1}}; string …

论文笔记(eTrust: Understanding Trust Evolution in an Online World)

eTrust&#xff1a;理解线上信任进化 原文链接&#xff1a;eTrust: Understanding Trust Evolution in an Online World, KDD’12 原理&#xff1a;用户偏好与项的向量内积 用户与朋友相似度权重*朋友对项的时间衰减评分用户对项的评分 摘要 大部分关于线上信任的研究都假设…

技术动态 | 67 亿美金搞个图,创建知识图谱的成本有多高你知道吗?

OpenKG 祝各位读者元宵节快乐&#xff01;本文转载自公众号&#xff1a;机器之心。选自ISWC作者&#xff1a;Baptiste Rocca参与&#xff1a;思源、李亚洲我们知道强大的深度模型需要很多计算力&#xff0c;那你知道创建一个知识图谱的成本到底是多少吗&#xff1f;德国 Mannhe…

Attention模型:我的注意力跟你们人类不一样

星标/置顶小屋&#xff0c;带你解锁最萌最前沿的NLP、搜索与推荐技术文 | 小轶背景截至今日&#xff0c;Badanau Attention的原文citation已达1.34w之多。2020年几乎所有主流NLP任务都需要借助attetion来实现。在深度学习全民炼丹的时代&#xff0c;attention是为数不多具有较强…

动态规划算法(Dynamic Programming)之0-1背包问题

文章目录1. 问题引入2. 动态规划求解0-1背包3. 复杂度4. 0-1背包升级版&#xff08;带价值&#xff09;5. 0-1背包升级版&#xff08;带价值&#xff09;DP解法1. 问题引入 前面讲了0-1背包的回溯解决方法&#xff0c;它是穷举所有可能&#xff0c;复杂度是指数级别的&#xf…

Java多线程系列(一):最全面的Java多线程学习概述

Java并发编程的技能基本涵括以下5方面&#xff1a; 多线程 线程池 线程锁 并发工具类 并发容器 多线程的4种创建方式 继承Thread 实现Runnable接口 实现Callable接口 以及线程池来创建线程 Java线程的生命周期 线程的创建 线程的就绪 线程的运行 线程的阻塞 线程的死…

论文浅尝 | 基于知识库的自然语言理解 01#

本文转载自公众号&#xff1a;知识工场。罗康琦&#xff0c;上海交通大学计算机系2019届博士&#xff0c;研究方向为自然语义理解和知识图谱。2012年获得华中科技大学软件工程学士学位&#xff0c;现就职于京东数据科学实验室&#xff08;Data Science Lab&#xff09;。他曾在…

推荐系统图算法实用干货汇总(含论文、代码、样例教程)

Hello,今天为朋友们推荐一个值得学习的公众号「浅梦的学习笔记」&#xff0c;小编目前在电商公司从事推荐系统相关的工作。主要分享关于「推荐系统&#xff0c;图算法&#xff0c;NLP&CV以及求职面试」等内容&#xff0c;欢迎关注一起学习和交流&#xff5e;文末可打包下载…

动态规划应用--双11购物凑单

文章目录1. 问题描述2. 代码实现1. 问题描述 双11购物节的时候&#xff0c;某宝给你很多张满300减50的优惠券&#xff0c;你想组合各种商品的价格总和>300&#xff0c;且金额总和越接近300越好&#xff0c;这样可以多薅点羊毛。 回溯算法效率太低&#xff0c;时间复杂度指…

商汤科技2020数据分析师0820笔试题目整理

2019年8月19日 问答题1&#xff1a;缺失值数据预处理有哪些方法&#xff1f;https://juejin.im/post/5b5c4e6c6fb9a04f90791e0c 处理缺失值的方法如下&#xff1a;删除记录&#xff0c;数据填补和不处理。主要以数据填补为主。 1 删除记录&#xff1a;该种方法在样本数据量十分…

Java多线程系列(八):ConcurrentHashMap的实现原理(JDK1.7和JDK1.8)

HashMap、CurrentHashMap 的实现原理基本都是BAT面试必考内容&#xff0c;阿里P8架构师谈&#xff1a;深入探讨HashMap的底层结构、原理、扩容机制深入谈过hashmap的实现原理以及在JDK 1.8的实现区别&#xff0c;今天主要谈CurrentHashMap的实现原理&#xff0c;以及在JDK1.7和…