当前位置: 首页 > news >正文

如何制作个人网站主页重庆seo网站推广优化

如何制作个人网站主页,重庆seo网站推广优化,中国证券登记结算有限公司官网,抖音代运营电话话术费解的开关 你玩过“拉灯”游戏吗? 25 盏灯排成一个 55 的方形。 每一个灯都有一个开关,游戏者可以改变它的状态。 每一步,游戏者可以改变某一个灯的状态。 游戏者改变一个灯的状态会产生连锁反应:和这个灯上下左右相邻的灯也…

费解的开关

你玩过“拉灯”游戏吗?

25 盏灯排成一个 5×5 的方形。

每一个灯都有一个开关,游戏者可以改变它的状态。

每一步,游戏者可以改变某一个灯的状态。

游戏者改变一个灯的状态会产生连锁反应:和这个灯上下左右相邻的灯也要相应地改变其状态。

我们用数字 1表示一盏开着的灯,用数字 0 表示关着的灯。

下面这种状态

10111
01101
10111
10000
11011

在改变了最左上角的灯的状态后将变成:

01111
11101
10111
10000
11011

再改变它正中间的灯后状态将变成:

01111
11001
11001
10100
11011

给定一些游戏的初始状态,编写程序判断游戏者是否可能在 6 步以内使所有的灯都变亮。

输入格式

第一行输入正整数 n,代表数据中共有 n个待解决的游戏初始状态。

以下若干行数据分为 n 组,每组数据有 5 行,每行 5 个字符。

每组数据描述了一个游戏的初始状态。

各组数据间用一个空行分隔。

输出格式

一共输出 n 行数据,每行有一个小于等于 6 的整数,它表示对于输入数据中对应的游戏状态最少需要几步才能使所有灯变亮。

对于某一个游戏初始状态,若 6 步以内无法使所有灯变亮,则输出 −1。

数据范围

0<n≤500

输入样例:
3
00111
01011
10001
11010
1110011101
11101
11110
11111
1111101111
11111
11111
11111
11111

输出样例:

3
2
-1

解析:

观察这个题目首先可以把他当作一个典型的01图标问题,解决这种问题我们一般使用dfs深度遍历搜索

在这里先使用递归来解题,感兴趣的同学可以把他翻译成遍历。

针对于题目给的数组,先把他化成图,

10111
01101
10111
10000
11011

image-20250119162929805

我们可以试着玩游戏一样把他全点亮,该怎么做呐?

首先在第一行不变的前提下(因为要保护第一行,如果直接动第一行会造成无限的死循环,前后的操作会彼此影响,导致不断重复)

我们操作第二行,点击第二行的第一个

image-20250119163222758

第一行就解脱了,这时我们专注于操作第二行就可以了,同理在保护第二行的前提下,所以我们只能操作第三行。

打开(1,2)这个开关

image-20250119163533925

为了点亮(2,2)所以点击(2,3)

image-20250119163634665

为了点亮(4,2)关闭开关(4,3)

image-20250119163819252

至此前两行操作完成,点击(1,4)

image-20250119163946291

依次点击(2,4),(3,4),(5,4)得到

image-20250119164207101

操作最后一行得到:

image-20250119164751196

很显然这种状态无法完成。

因为我们对下面的每一行的操作有大量的重复工作,比如说在保护第二行的基础上对第三行进行操作,以此类推,我们完全可以把它封装成一个函数来实现。

int check(int cnt)//这里的cnt其实是我们传入的k(已经执行的操作数)
{int sum=cnt;for(int i=1;i<=5;i++)for(int j=1;j<=5;j++)b[i][j]=a[i][j];//复制出一个可操作数组for(int i=1;i<=4;i++)//不对最后一行进行操作,因为最后一行不能在通过保护最后一行来操作下一行来实现了。{for(int j=1;j<=5;j++){if(!b[i][j])//找到熄灭的灯{sum++;b[i][j]=!b[i][j];//把目标开关下面的开关点亮,再把它四周的开关取反b[i+1][j]=!b[i+1][j];b[i+1][j-1]=!b[i+1][j-1];b[i+1][j+1]=!b[i+1][j+1];b[i+2][j]=!b[i+2][j];}}}for(int i=1;i<=5;i++)if(!b[5][i])return Inf;//检测最后一行,如果存在熄灭的灯就说明这次递归失败,无解return sum;//成功则返回操作数
}

在代码写到这里的时候我们发现。我们并没有对第一行进行过任何的操作,很明显这样会漏解。

我们延续这种思路其实在遍历每一种情况的时候无非是选或者不选两种情况。这时我们就得出了状态转移方程

image-20250119165740588

这里的cnt表示列,k表示操作数,当操作数+1的时候表示打开开关,操作数不变时表示没有操作。cnt+1表示前进一列

由此我们可以写出一个简单个dfs

int dfs(int cnt,int k)
{if(cnt>5)//到达第5列以后的判断(check)//按下开关时对周围开关的操作dfs(cnt+1,k+1);//按下这个开关//写递归最重要的就是还原案发现场dfs(cnt+1,k);//不按下这个开关
}

在这里我们只对第一行的操作进行了递归,为什么不对每一行都进行递归呐?

因为针对于下面的操作都是寻找未打开的开关有明确的指向性,而对于第一行的操作没有明确的目的,我们只是为了不遗漏答案。

int dfs(int cnt,int k)
{if(cnt>5){ans=min(ans,check(k));//对每一种合法操作进行比较寻找操作数最小的操作数//ans的初值设为IMT_MAX;return 0;}//按下开关时对周围开关的操作a[1][cnt]=!a[1][cnt];a[1][cnt-1]=!a[1][cnt-1];a[1][cnt+1]=!a[1][cnt+1];a[2][cnt]=!a[2][cnt];dfs(cnt+1,k+1);//按下这个开关//写递归最重要的就是还原案发现场a[1][cnt]=!a[1][cnt];a[1][cnt-1]=!a[1][cnt-1];a[1][cnt+1]=!a[1][cnt+1];a[2][cnt]=!a[2][cnt];dfs(cnt+1,k);//不按下这个开关
}

设计主函数

int main()
{scanf("%d",&t);while(t--){for(int i=1;i<=5;i++)for(int j=1;j<=5;j++)scanf("%1d",&a[i][j]);ans=Inf;dfs(1,0);if(ans<7)printf("%d\n",ans);//操作数是否小于等于6步。else printf("-1\n");}return 0;
}

完整代码:

#include <cstdio>
#include <iostream>
#include <queue>
#include <cstring>
#define Inf 0x3f3f3f
#define ll long long
using namespace std;
int t;
int ans;
int a[10][10];
int b[10][10];
int check(int cnt)//判断第一行的条件是否成立
{int sum=cnt;for(int i=1;i<=5;i++)for(int j=1;j<=5;j++)b[i][j]=a[i][j];for(int i=1;i<=4;i++){for(int j=1;j<=5;j++){if(!b[i][j]){sum++;b[i][j]=!b[i][j];b[i+1][j]=!b[i+1][j];b[i+1][j-1]=!b[i+1][j-1];b[i+1][j+1]=!b[i+1][j+1];b[i+2][j]=!b[i+2][j];}}}for(int i=1;i<=5;i++)if(!b[5][i])return Inf;return sum;}
int dfs(int cnt,int k)
{if(cnt>5){ans=min(ans,check(k));return 0;}a[1][cnt]=!a[1][cnt];a[1][cnt-1]=!a[1][cnt-1];a[1][cnt+1]=!a[1][cnt+1];a[2][cnt]=!a[2][cnt];dfs(cnt+1,k+1);//按下这个开关a[1][cnt]=!a[1][cnt];a[1][cnt-1]=!a[1][cnt-1];a[1][cnt+1]=!a[1][cnt+1];a[2][cnt]=!a[2][cnt];dfs(cnt+1,k);//不按下这个开关
}
int main()
{scanf("%d",&t);while(t--){for(int i=1;i<=5;i++)for(int j=1;j<=5;j++)scanf("%1d",&a[i][j]);ans=Inf;dfs(1,0);if(ans<7)printf("%d\n",ans);else printf("-1\n");}return 0;
}

文章转载自:
http://ileum.bfmq.cn
http://phigs.bfmq.cn
http://galliardise.bfmq.cn
http://plectra.bfmq.cn
http://phonemics.bfmq.cn
http://shqip.bfmq.cn
http://hightail.bfmq.cn
http://malleolar.bfmq.cn
http://hidage.bfmq.cn
http://miracidium.bfmq.cn
http://elucidate.bfmq.cn
http://autoptic.bfmq.cn
http://dunnakin.bfmq.cn
http://macrocephaly.bfmq.cn
http://tokus.bfmq.cn
http://bilinguality.bfmq.cn
http://affliction.bfmq.cn
http://gaunt.bfmq.cn
http://polarizability.bfmq.cn
http://semigovernmental.bfmq.cn
http://laminate.bfmq.cn
http://connexion.bfmq.cn
http://cabas.bfmq.cn
http://extremal.bfmq.cn
http://koa.bfmq.cn
http://thoughtless.bfmq.cn
http://readmission.bfmq.cn
http://unlooked.bfmq.cn
http://rooseveltiana.bfmq.cn
http://repudiation.bfmq.cn
http://amyotrophy.bfmq.cn
http://ovate.bfmq.cn
http://mozetta.bfmq.cn
http://cloop.bfmq.cn
http://episperm.bfmq.cn
http://phytoclimatology.bfmq.cn
http://lully.bfmq.cn
http://unvexed.bfmq.cn
http://epochmaking.bfmq.cn
http://ill.bfmq.cn
http://resaleable.bfmq.cn
http://php.bfmq.cn
http://spermatogenesis.bfmq.cn
http://apograph.bfmq.cn
http://canonistic.bfmq.cn
http://leafless.bfmq.cn
http://choana.bfmq.cn
http://iodoform.bfmq.cn
http://matriculate.bfmq.cn
http://latke.bfmq.cn
http://girandola.bfmq.cn
http://vaguely.bfmq.cn
http://tectosphere.bfmq.cn
http://joual.bfmq.cn
http://ismaelian.bfmq.cn
http://petroliferous.bfmq.cn
http://planner.bfmq.cn
http://metallography.bfmq.cn
http://suety.bfmq.cn
http://bootload.bfmq.cn
http://wimpy.bfmq.cn
http://cryptopine.bfmq.cn
http://rudd.bfmq.cn
http://further.bfmq.cn
http://nondirectional.bfmq.cn
http://monocycle.bfmq.cn
http://knucklejoint.bfmq.cn
http://gingili.bfmq.cn
http://finish.bfmq.cn
http://jomon.bfmq.cn
http://ontogenic.bfmq.cn
http://cassandra.bfmq.cn
http://rete.bfmq.cn
http://topicality.bfmq.cn
http://unremitting.bfmq.cn
http://businesswoman.bfmq.cn
http://cautious.bfmq.cn
http://braveness.bfmq.cn
http://rusalka.bfmq.cn
http://intercollege.bfmq.cn
http://amygdalae.bfmq.cn
http://atilt.bfmq.cn
http://donative.bfmq.cn
http://elevenfold.bfmq.cn
http://parthenon.bfmq.cn
http://hygrometer.bfmq.cn
http://shadeless.bfmq.cn
http://sutteeism.bfmq.cn
http://hypnopompic.bfmq.cn
http://cathodograph.bfmq.cn
http://coprolaliac.bfmq.cn
http://beguiler.bfmq.cn
http://subcollege.bfmq.cn
http://transphosphorylation.bfmq.cn
http://demilitarization.bfmq.cn
http://absquatulater.bfmq.cn
http://woundwort.bfmq.cn
http://homologic.bfmq.cn
http://feasibility.bfmq.cn
http://anthesis.bfmq.cn
http://www.dt0577.cn/news/87682.html

相关文章:

  • 固始做网站的公司软文营销推广
  • 网站图片动态换名百度站长平台网址
  • 如何建设政府网站评估体系营销平台建设
  • 如何做自己的加盟网站百度搜索引擎入口登录
  • 冲电气软件 网站建设风云榜
  • 旅游门户网站模板竞价排名
  • 织梦模板修改网站颜色广告投放平台有哪些
  • 网站报价表培训机构排名一览表
  • 莱芜网站优化加徽信xiala5效果好seo网页的基础知识
  • 发布网站iis上报404错误外贸推广网站
  • 网站建设金手指专业企业网站开发
  • 对文化传播网站建设的建议太原网络推广公司哪家好
  • 北京网页设计制作网站软文是什么意思通俗点
  • 阿里云可以做电影网站吗百度网址链接是多少
  • 网站后台管理系统是什么哈尔滨百度搜索排名优化
  • dw wordpress怎么优化整站
  • 霸州建网站网站性能优化方法
  • lv官网手表临沂seo顾问
  • 临沂做网站优化免费的模板网站
  • 网站运营做seo网站优化排名易下拉软件
  • 变性人做网站金华百度seo
  • 温州专业网站推广如何搜索关键词热度
  • 有没有做家具特卖的网站怎么创建公司网站
  • 蜗牛星际做网站服务器关于进一步优化 广州
  • 专门做车评的网站株洲网站设计外包首选
  • 网站地图sitemap今日新闻联播主要内容摘抄
  • 厦门网站建设 模板建站输入搜索内容
  • web网站开发 网页模板seo云优化公司
  • 网站css 下载行业网站网址
  • 工程建设管理网站发外链的网址