POJ 1753 Flip Game DFS枚举
看题传送门:http://poj.org/problem?id=1753
DFS枚举的应用。
基本上是参考大神的。。。。
学习学习。。
#include<cstdio>
#include<iostream>
using namespace std;
int n,s,d,ans;
bool a[5][5],flag=false; //判断全部一样的情况
bool alllike()
{
for(int i=0;i<4;i++)
for(int j=0;j<4;j++)
if(a[i][j]!=a[0][0])
return false; return true;
} //翻转棋
void flip(int r,int c)
{
if(r>0)
a[r-1][c]=!a[r-1][c]; if(c>0)
a[r][c-1]=! a[r][c-1]; if(r<3)
a[r+1][c]=!a[r+1][c]; if(c<3)
a[r][c+1]=!a[r][c+1]; a[r][c]=!a[r][c];
} void dfs(int r,int c,int deep)
{
if(deep==ans)
{
flag=alllike();
return;
} if(r==4||flag)
return; flip(r,c); //翻转棋 if(c<3)
dfs(r,c+1,deep+1);
else
dfs(r+1,0,deep+1); flip(r,c); //把棋翻回来 if(c<3) //如果不满足则不翻转该棋
dfs(r,c+1,deep);
else
dfs(r+1,0,deep); return;
} int main()
{
char c;
for(int i=0;i<4;i++)
for(int j=0;j<4;j++)
{
scanf("%c",&c);
if(j==3)
getchar();
// cin>>c; //直接用cin也可以
if(c=='b')
a[i][j]=true;
else
a[i][j]=false;
} for(ans=0;ans<=16;ans++)
{
dfs(0,0,0);
if(flag)
break;
} if(flag)
printf("%d\n",ans);
else
printf("Impossible\n"); }
POJ 1753 Flip Game DFS枚举的更多相关文章
- POJ 1753 Flip Game (DFS + 枚举)
题目:http://poj.org/problem?id=1753 这个题在開始接触的训练计划的时候做过,当时用的是DFS遍历,其机制就是把每一个棋子翻一遍.然后顺利的过了.所以也就没有深究. 省赛前 ...
- poj 1753 Flip Game (dfs)
Flip Game Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 28805 Accepted: 12461 Descr ...
- POJ 1753 Flip Game【枚举】
题目链接: http://poj.org/problem?id=1753 题意: 由白块黑块组成的4*4方格,每次换一个块的颜色,其上下左右的块也会被换成相反的颜色.问最少换多少块,使得最终方格变为全 ...
- poj 1753 Flip Game(暴力枚举)
Flip Game Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 52279 Accepted: 22018 Des ...
- POJ 1753 Flip Game (枚举)
Flip Game Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 26492 Accepted: 11422 Descr ...
- 枚举 POJ 1753 Flip Game
题目地址:http://poj.org/problem?id=1753 /* 这题几乎和POJ 2965一样,DFS函数都不用修改 只要修改一下change规则... 注意:是否初始已经ok了要先判断 ...
- poj 1753 Flip Game(bfs状态压缩 或 dfs枚举)
Description Flip game squares. One side of each piece is white and the other one is black and each p ...
- POJ 1753. Flip Game 枚举or爆搜+位压缩,或者高斯消元法
Flip Game Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 37427 Accepted: 16288 Descr ...
- POJ 1753 Flip Game(高斯消元+状压枚举)
Flip Game Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 45691 Accepted: 19590 Descr ...
随机推荐
- vim 插件之commentary
下载地址 http://www.vim.org/scripts/script.php?script_id=3695 如果是使用vundle来管理这个插件的话,你可以添加如下配置 tpope/vim-c ...
- Flat UI简介
Flat UI简介 一.简介 Flat UI是基于Bootstrap之上进行二次开发的扁平化前端框架,他提供了动感.时尚的风格色调搭配,简洁.炫丽的功能组件,同时还提供了更为平滑的js交互动画,可以称 ...
- SortedDictionary<TKey, TValue> 类 表示根据键进行排序的键/值对的集合。
SortedDictionary<TKey, TValue> 类 表示根据键进行排序的键/值对的集合. SortedDictionary<TKey, TValue> 中的每 ...
- pyspark使用
1.安装python3 2.idea安装Python插件 3.下载spark,设置SPARK_HOME环境变量 4.安装pyspark,numpy 5.运行pyspark应用 pyspark应用如果使 ...
- Ansible学习记录二:命令
0.ansible 命令参数详解: [root@localhost ~]# ansible Usage: ansible <host-pattern> [options] Options: ...
- Ubuntu 下安装 Python 虚拟环境
写在前面: 安装指南是在 Ubuntu 下面操作的.不同的 Linux 版本,安装指令不同.所以,该指南的某些指令对于像 CentOS 等非 Ubuntu 系统不适用. 为什么需要使用虚拟环境? 虚拟 ...
- 洛谷 P2867 [USACO06NOV]大广场Big Square
P2867 [USACO06NOV]大广场Big Square 题目描述 Farmer John's cows have entered into a competition with Farmer ...
- 兔子--ps中的基本工具总结(ps cs5)
矩形选框工具 椭圆选框工具 单行选框工具 单列选框工具 移动工具 套索工具柜 多边形套索工具 磁性套索工具 魔棒工具 高速选择工具 裁剪工具 切片工具 切片选择工具 吸管工具 颜色取样器工具 标尺工具 ...
- 使用TCP协议的NAT穿透技术 (转载)
其实很早我就已经实现了使用TCP协议穿透NAT了,但是苦于一直没有时间,所以没有写出来,现在终于放假有一点空闲,于是写出来共享之. 一直以来,说起NAT穿透,很多人都会被告知使用UDP打孔这个技术,基 ...
- fragment-实例创建跟使用
今天接触到了fragment,在网上看到了它的使用方法.现在把它的创建跟使用记录下,方便以后查询. 1.创建一个自己的fragment,继承自fragment package com.android. ...