#include<iostream>
char data[16];
int a[16];
int d[4] = { -4, 1, 4, -1 };
char b[16];
int flag;
int count = 0;
int min = 1000;
int sum;
void dfs(int step)
{
sum = 0;
for (int i = 0; i < step; i++)
{
sum = sum + a[i];
}
if (sum >= min)
return; if (step == 16)
{ count = 0; flag = 1;
for (int i = 0; i<16; i++)
b[i] = data[i];
for (int i = 0; i<16; i++)
{ if (a[i] == 1)
{
if (b[i] == 'b')
{
b[i] = 'w';
}
else {
b[i] = 'b';
}
for (int j = 0; j<4; j++)
{
if (i + d[j] >= 0 && i + d[j]<16)
{
if (b[i + d[j]] == 'w')
{
b[i + d[j]] = 'b';
}
else
{
b[i + d[j]] = 'w';
}
} }
} } for (int i = 0; i<16; i++)
{
if (b[0] == b[i])
flag = 1;
else
{
flag = 0;
break;
}
} if (flag == 1)
{
//printf("!!");
for (int i = 0; i<16; i++)
{
if (a[i] == 1)
count++;
}
//printf("%d", count);
if (count < min)
min = count;
} // printf("%d", min);
return;
}
for (int i = 0; i<2; i++)
{
a[step] = i;
dfs(step + 1);
}
}
int main()
{
freopen("input.txt", "r", stdin);
for (int i = 0; i<16; i++)
{
if (i == 4 || i == 8 || i == 12)
getchar();
scanf("%c", &data[i]);
} for (int i = 0; i<16; i++)
{
b[i] = data[i];
} dfs(0);
printf("%d", min); }

  

dfs 翻棋盘end的更多相关文章

  1. n皇后问题--DFS输出棋盘

    N皇后问题 Problem Description 在N*N的方格棋盘放置了N个皇后,使得它们不相互攻击(即任意2个皇后不允许处在同一排,同一列,也不允许处在与棋盘边框成45角的斜线上.你的任务是,对 ...

  2. DFS例题

    特殊的质数肋骨(递归)] -题目描述-农民约翰的母牛总是生产出最好的肋骨.你能通过农民约翰和美国农业部标记在每根肋骨上的数字认出它们. 农民约翰确定他卖给买方的是真正的质数肋骨,是因为从右边开始切下肋 ...

  3. poj练习题的方法

    poj1010--邮票问题 DFSpoj1011--Sticks dfs + 剪枝poj1020--拼蛋糕poj1054--The Troublesome Frogpoj1062--昂贵的聘礼poj1 ...

  4. poj分类解题报告索引

    图论 图论解题报告索引 DFS poj1321 - 棋盘问题 poj1416 - Shredding Company poj2676 - Sudoku poj2488 - A Knight's Jou ...

  5. 【DFS练习】-翻棋子-C++

    Description 有一个4*4的棋盘,放有16枚棋子. 每个棋子都是一面黑一面白,一开始有的黑面朝上,有的白面朝上. 下面是一个例子,这个例子用文字描述为: bwbw wwww bbwb bww ...

  6. POJ 1321 棋盘问题(dfs)

    传送门 棋盘问题 Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 38297   Accepted: 18761 Descri ...

  7. POJ 1321 棋盘问题 --- DFS

    POJ 1321 题目大意:给定一棋盘,在其棋盘区域放置棋子,需保证每行每列都只有一颗棋子. (注意 .不可放 #可放) 解题思路:利用DFS,从第一行开始依次往下遍历,列是否已经放置棋子用一个数组标 ...

  8. poj 1321 棋盘问题【dfs】

    棋盘问题 Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 28308   Accepted: 13996 Descriptio ...

  9. 翻纸牌游戏(dfs回溯)

    翻纸牌游戏 Time Limit : 9000/3000ms (Java/Other)   Memory Limit : 32768/32768K (Java/Other) Total Submiss ...

随机推荐

  1. ajax批删

  2. sersync

    一.准备 1.目标:从192.168.0.1上把/app/web/cnblogs.com/data下文件同步到192.168.0.2下的/app/web/cnblogs-slave.com/data: ...

  3. 缓存AsimpleCache -- 解决Android中Sharedpreferences无法存储List数据/ASimpleCache

    Sharedpreferences想必大家在项目中都经常会用到,但是如果需要在本地需要存储比较多的数据,存储一个集合的时,发现Sharedpreferences并不 是那么好使了. 分析 如果需要在本 ...

  4. Stanford NLP学习笔记:7. 情感分析(Sentiment)

    1. 什么是情感分析(别名:观点提取,主题分析,情感挖掘...) 应用: 1)正面VS负面的影评(影片分类问题) 2)产品/品牌评价: Google产品搜索 3)twitter情感预测股票市场行情/消 ...

  5. 2015-06-02 关于mvc表格点击按钮自动添加一行<tr></tr>

    前台代码: @using (Html.BeginForm("ContactPerson", "User", FormMethod.Post, new { @cl ...

  6. Mysql查询英文如何严格区分大小写?

    1. 前提:在Mysql数据库中进行查询时,希望英文严格区分大小写.默认情况下是不区分大小写的.2. 演示如下:在数据库表emp中,job字段中存储的值有'Engineer',现在的情况是,下面的两句 ...

  7. 测试家庭流媒体服务器Windows7

    测试首先选择了Darwin Streaming Server (DSS) for Windows 下载地址:http://dss.macosforge.org/downloads/DarwinStre ...

  8. protocol

    For every object that can have a delegate, there is a corresponding protocol that declares themessag ...

  9. Jstl简单应用

    jsp引入信息------ <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" % ...

  10. Java中的闪光点:ThreadLocal是线程Thead的局部变量,可替代同步机制的设计,值得学习和研究

    线程局部变量ThreadLocal,是Java支持的一种线程安全机制,目的是解决多线程的并发问题. 具体来讲,就是多个线程访问该实例对象的变量时,该实例对象将其存储为键值对的形式,保证各个线程(键)分 ...