Filp Game
| Time Limit: 1000MS | Memory Limit: 65536K | |
| Total Submissions: 25573 | Accepted: 11052 |
Description
- Choose any one of the 16 pieces.
- Flip the chosen piece and also all adjacent pieces to the left, to the right, to the top, and to the bottom of the chosen piece (if there are any).
Consider the following position as an example:
bwbw
wwww
bbwb
bwwb
Here "b" denotes pieces lying their black side up and "w" denotes pieces lying their white side up. If we choose to flip the 1st piece from the 3rd row (this choice is shown at the picture), then the field will become:
bwbw
bwww
wwwb
wwwb
The goal of the game is to flip either all pieces white side up or all pieces black side up. You are to write a program that will search for the minimum number of rounds needed to achieve this goal.
Input
Output
Sample Input
bwwb
bbwb
bwwb
bwww
Sample Output
4
Source
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int map[][];
int step;
int flag;
int check()
{
int i,j;
for(i=;i<=;i++)
for(j=;j<=;j++)
if(map[i][j]!=map[][])
return ;
return ;
}
void fanzhuan(int x,int y)
{
map[x][y+]=!map[x][y+];
map[x][y-]=!map[x][y-];
map[x+][y]=!map[x+][y];
map[x-][y]=!map[x-][y];
map[x][y]=!map[x][y];
}
void dfs(int x,int y,int sum)
{
if(sum==step)
{
flag=check();
return ;
}
if(x<=)
{
fanzhuan(x,y);
if(y<=)//必须是3,因为下面的y+1让y变成了4,达到最大值
dfs(x,y+,sum+);
else dfs(x+,,sum+);
if(flag==)return ;
else
{
fanzhuan(x,y);
if(y<=)
dfs(x,y+,sum);
else
dfs(x+,,sum);
}
}
else return ;
}
int main()
{
memset(map,,sizeof(map));
int i;
char str[][];
for(i=;i<=;i++)
scanf("%s",str[i]);
int t;
for(i=;i<=;i++)
{
for(t=;t<=;t++)
if(str[i][t]=='b')
map[i+][t+]=;
}
for(step=;step<=;step++)
{
dfs(,,);
if(flag)
{
printf("%d\n",step);
break;
}
}
if(flag==)printf("Impossible\n");
return ;
}
Filp Game的更多相关文章
- php扩展1:filp/whoops(用于调试,方便定位错误点)
一.composer下载filp/whoops: 1.在composer.json中添加:"filp/whoops": "*",如下所示: 2.执行compos ...
- matlab学习笔记11_3高维数组操作 filp, shiftdim, size, permute, ipermute
一起来学matlab-matlab学习笔记11 11_3 高维数组处理和运算 filp, shiftdim, size, permute, ipermute 觉得有用的话,欢迎一起讨论相互学习~Fol ...
- Metro Win8风格的按钮(Filp翻转)
原地址->http://www.cnblogs.com/yk250/p/5661093.html 介绍:简约而不简单....颜色可随意调制,最好用Blend工具. 效果图如下:话说这个图会不会太 ...
- java Channel filp compact
import java.nio.ByteBuffer; //Listing 7-1. Copying Bytes from an Input Channel to an Output Channel ...
- Bringing Whoops Back to Laravel 5
You might be missing the "prettier" Whoops error handler from Laravel 4. If so, here's how ...
- Linux设备管理(二)_从cdev_add说起
我在Linux字符设备驱动框架一文中已经简单的介绍了字符设备驱动的基本的编程框架,这里我们来探讨一下Linux内核(以4.8.5内核为例)是怎么管理字符设备的,即当我们获得了设备号,分配了cdev结构 ...
- Linux字符设备驱动框架
字符设备是Linux三大设备之一(另外两种是块设备,网络设备),字符设备就是字节流形式通讯的I/O设备,绝大部分设备都是字符设备,常见的字符设备包括鼠标.键盘.显示器.串口等等,当我们执行ls -l ...
- blocking and unblocking mechanism for linux drivern code
概念: 1> 阻塞操作 是指在执行设备操作时,若不能获得资源,则挂起进程直到满足操作条件后再进行操作.被挂起的进程进入休眠,被从调度器移走,直到条件满足: 2> 非阻塞操作 在 ...
- Linux基礎知識 —— open&close
下面說一下在用戶空間調用open/close/dup跟驅動中的open和release的對應. 下面是測試驅動: #include <linux/module.h> #include &l ...
随机推荐
- POJ 3281 网络流dinic算法
B - Dining Time Limit:2000MS Memory Limit:65536KB 64bit IO Format:%I64d & %I64u Submit S ...
- html之左边不动右边内容自动修剪并出现滚动轮查看剩余内容
<html lang="en"> <head> <meta charset="UTF-8"> <title>Ti ...
- django的前后的结合,search搜索功能案例
利用django的Q()功能可以很好的展开搜索功能 假设我要做个这样的搜索功能
- extjs动态改变样式
{ width:438, height:440, name:'loginDiv', ui:'123', x: '50%' , y: 200, border:true, bodyStyle:{ 'bor ...
- 【自动部署】Ansible 怎么通过堡垒机/跳板机 访问目标机器
Ansible机器的 /root/.ssh/config 配置如下即可:Host 目标机器IP User root IdentityFile=/root/.ssh/xxx_id_rsa ProxyCo ...
- 【leetcode】Maximum Subarray
Maximum Subarray Find the contiguous subarray within an array (containing at least one number) which ...
- android气泡消息提醒布局
无论是anroid还是ios,气泡消息提醒再正常不过了.然而要定义一个气泡消息提醒确要费一番周折.下面记录下气泡提醒布局. 定义气泡背景shape_unread_message_bg.xml < ...
- ios 修正waring:Method override for the designated initializer of the superclass '-init' not found
swift引入后,为了使oc和swift更相近,对oc的初始化方法也进行了修正,具体说明,见下面的链接,这个waring的最简单的修正方法是,到相应类的头文件中,去掉在自定义初始化方法后面的 NS_D ...
- 为Linux服务器设置静态IP的方法
这里以CentOS 7系列为例设置静态IP,原来RedHat系列的Linux发行版可以通过setup工具方便的设置静态IP,但是在版本7之后setup工具的功能就逐渐减弱了,所以这时候采用修改配置文件 ...
- percona-toolkit 之 【pt-heartbeat】说明
背景: MySQL的架构中,Master-Slave是目前最受欢迎的,用的也最多,但是对于主从的延迟一般都是按照他自己的状态[Seconds_Behind_Master]来查看的,最近看了[不要用该值 ...