Poj2965 冰箱的开关
#include<iostream>
using namespace std; int flag;
int step;
int loction[][];
int r[] = { };
int c[] = { }; void turn(int i, int j) //转换
{
for (int q = ; q < ; q++)
{
loction[i][q] = !(loction[i][q]);
}
for (int p = ; p < ; p++)
{
if (p != i)
{
loction[p][j] = !(loction[p][j]);
}
} } int range()//判定表格是否全部一样
{
int i, j;
for (i = ; i < ; i++)
{
for (j = ; j < ; j++)
{
if (loction[i][j] != )
{
return ;
}
}
}
return ;
} int DFS(int i, int j, int dp)//深搜(dp<=step)
{
//对第dp次的转换作判断
if (dp == step)
{
flag = range();
return ;
}
if (flag || i == )
{
return ;
} //没有以上两种可以直接退出函数的情况,
//说明此时的dp<step,就进行第dp+1次的转换
turn(i, j);
//对当前转换的主位置(i,j)作记录
r[dp] = i+;
c[dp] = j + ; //对第dp+1次的转换进行判断
if (j < )
{
//判断的是第dp+1次时转换的turn(i,j),
//如果判断成功,直接退出函数。
//如果判断失败,要继续进行下一列(即j+1)的递归转换和判断
//j+1不影响对第dp+1次转换的turn(i,j)的判断
//因为在DFS()函数里,判断turn(i,j)的步骤总在turn(i,j+1)前面
DFS(i, j+, dp + );
}
else
{
//判断的是第dp+1次时转换的turn(i,j),
//如果判断成功,直接退出函数。
//如果判断失败,要继续进行下一行(即i+1)的递归转换和判断
//i+1不影响对第dp+1次转换的turn(i,j)的判断
//因为在DFS()函数里,判断turn(i,j)的步骤总在turn(i+1,j)前面
DFS(i + , , dp+);
} turn(i, j); //不符合条件,重新转换回来 //第dp次时,表格恢复初始状态
if (j < )
{
DFS(i, j + , dp ); //进行对下一列进行第dp次的转换()
}
else
{
DFS(i + , , dp); //进行对下一行进行第dp次的转换
} return ; } int main()
{
char tmp;
for (int i = ; i < ; i++)
{
for (int j = ; j < ; j++)
{
scanf("%c", &tmp);
if (tmp == '-')
{
loction[i][j] = ;
}
else
{
loction[i][j] = ;
}
}
getchar(); //不要遗忘
} for (step = ; step <= ; step++)
{
flag = ;
DFS(, , );
if (flag)
break;
}
if (flag)
{
cout << step << endl;
for (int i = ; i < step; i++)
{
cout << r[i] << " " << c[i] << endl;
}
}
return ; }
Poj2965 冰箱的开关的更多相关文章
- The Pilots Brothers' refrigerator - poj 2965
Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 20325 Accepted: 7830 Special Judg ...
- POJ-2965 The Pilots Brothers' refrigerator---思维题
题目链接: https://vjudge.net/problem/POJ-2965 题目大意: 一个冰箱上有4*4共16个开关,改变任意一个开关的状态(即开变成关,关变成开)时,此开关的同一行.同一列 ...
- [POJ2965]The Pilots Brothers' refrigerator (搜索/位运算)
题意 游戏“The Pilots Brothers:跟随有条纹的大象”有一个玩家需要打开冰箱的任务. 冰箱门上有16个把手.每个手柄可以处于以下两种状态之一:打开或关闭.只有当所有把手都打开时,冰箱才 ...
- 手游聚合SDK开发之远程开关---渠道登入白名单
白名单有啥好说的呢?无非就是筛选登入,大家第一眼看到就是这个印象,白名单也是有文章的,弄的时机不同会给你带来很不错的收益,注意是收益.还是举例来说,游戏上线前渠道都会做一个预下载,一般提前1-2天,这 ...
- TYPESDK手游聚合SDK客户端远程开关:渠道支付黑名单
渠道支付要做开关干嘛用呢?为什么要做这种东西呢? 这个教训来分享一下,我们的游戏上线公测了,59个渠道首发,其中包括了应用宝,UC,360等的大渠道,也包含有一些工会渠道和小渠道,上线后一切正常,但是 ...
- iOS系列 基础篇 09 开关、滑块和分段控件
iOS系列 基础篇 09 开关.滑块和分段控件 目录: 案例说明 开关控件Switch 滑块控件Slider 分段控件Segmented Control 1. 案例说明 开关控件(Switch).滑块 ...
- Context值和bool开关
Context值和bool开关的相关内容 Context值分为2种 系统默认的context值 服务的context值 Context值的作用 主要是防止有未知文件进入目录文件之中(如将病毒拷贝到 ...
- 多线程、委托、Invoke解决winform界面卡死的问题,并带开关
一.知识点介绍 1,更新控件的内容,应该调用控件的Invoke方法. Invoke指: 在拥有控件的基础窗口句柄的线程上,用指定的参数列表执行指定委托.该方法接收一个委托类型和委托的参数,因此需要定义 ...
- 替代jquery1.9版本以前的toggle事件函数(开关)
以上文章为转载自http://blog.sina.com.cn/s/blog_50042fab0101c7a9.html var flag=1; $(".selector").cl ...
随机推荐
- 接口自动化测试平台-接入持续集成jenkins
开篇提到,自动化测试最终期望还是能接入持续集成系统jenkins,下面记录下Go接口自动化测试平台是如何设计接入jenkins的. 回到Go接口自动化测试平台,在web系统中触发测试任务执行的入口为: ...
- 开发常见错误解决(6)WSE3.0未处理的WebException,未处理的Web异常,基础连接以及关闭...
开发常见错误解决(6)WSE3.0未处理的WebException,未处理的Web异常,基础连接以及关闭. 我们在调试WSE服务端服务的时候会抛出,未处理的Web异常,基础连接以及关闭的异常信息.如图 ...
- 2019年 ICPC亚洲区预赛(上海赛区)总结
首先,我要说,我输了,输给了自己的无知,输给了自己的心态与实力. 上海区域赛,打铁而归,最终还是没有比过自己SLG的朋友.要说什么呢?实力的差距,还是说给自己的失败找借口?不能进入金牌区,为什么铜牌区 ...
- RobotFrameWork 自动化环境搭建(基于 python3.6)
一.需要安装的工具目录 安装 python3.6.0 我这里采用的是 python3.6 (目前慢慢市场在推广 python3.0 版本了) 安装 wxPython(Python 非常有名的一个GUI ...
- 线性回归 - LinearRegression - 预测糖尿病 - 量化预测的质量
线性回归是分析一个变量与另外一个或多个变量(自变量)之间,关系强度的方法. 线性回归的标志,如名称所暗示的那样,即自变量与结果变量之间的关系是线性的,也就是说变量关系可以连城一条直线. 模型评估:量化 ...
- 《C程序设计语言》 练习1-23
问题描述 编写一个删除C语言程序中所有的注释语句.要正确处理带引号的字符串与字符常量.在C语言中,注释不允许嵌套. Write a program to remove all comments fro ...
- Java——Java实现生产者消费者
1.生产/消费者模型 生产/消费者问题是个非常典型的多线程问题,涉及到的对象包括"生产者"."消费者"."仓库"和"产品" ...
- 【译】Using .NET for Apache Spark to Analyze Log Data
.NET for Spark可用于处理成批数据.实时流.机器学习和ad-hoc查询.在这篇博客文章中,我们将探讨如何使用.NET for Spark执行一个非常流行的大数据任务,即日志分析. 1 什么 ...
- IDEA 创建Spring项目后org.springframework.boot报错
IDEA 创建 Spring boot 项目后 ,在pom.xml文件中 org.springframework.boot出错,刷新也没有作用. 如图: 可以降低 org.springframewor ...
- flink基础篇
Flink面试--核心概念和基础考察 1.简单介绍一下 Flink 2.Flink 相比传统的 Spark Streaming 有什么区别? 3.Flink 的组件栈有哪些? 面试知识 ...