POJ1683 Puzzlestan ——Floyd传递闭包+Dfs

好久没写Dfs了,拿来练手。

WA了一次,没有判断中间的情况……

解法:先用Floyd传递闭包处理哪些点一定要在一起、哪些点一定不能在一起,六重循环。

然后深搜,res[i][j]表示1,i这个物品在j这一行的匹配物品列编号。

没有最优性剪枝,只有一堆可能性剪枝:

(1)对于和(1,i)这个点关系为“一定在一起”的点(j,k),一定要将res[i,j]设置为k。

(2)即将搜索res[i][j]为k的情况是否可能,那么条件就要是(j,k)这个点与(1,i)点的关系不是“不可能在一起”,而且(j,k)这个点与所有已经和(1,i)点匹配的点的关系不是“不可能在一起”。

参考代码:

program poj1683;//By_Thispoet
const maxn=10;
varx1,y1,x2,y2        :longint;i,j,m,n,p,q,test   :longint;map                :array[0..maxn,0..maxn,0..maxn,0..maxn]of integer;res                :array[0..maxn,0..maxn]of integer;v                  :array[0..maxn,0..maxn]of boolean;ch                 :array[0..maxn,0..maxn]of char;c,cc               :char;flag               :boolean;procedure printf();
beginfor i:=1 to m do beginfor j:=1 to n do write(ch[j,res[i,j]]);writeln;end;writeln;
end;procedure dfs(code,pos:longint);var i,j,k:longint;beginif code=n+1 then beginprintf();flag:=true;exit;end;if res[pos,code]<>-1 then beginif pos+1<=m then dfs(code,pos+1) else dfs(code+1,1);exit;end;if flag then exit;for i:=1 to m do if (not v[code][i])and(map[1,pos,code,i]<>2) then beginfor j:=code+1 to n do for k:=1 to m do if (map[code,i,j,k]=1)and(res[pos,j]<>-1)then beginflag:=true;break;end;for j:=1 to code-1 do if map[code,i,j,res[pos,j]]=2 then beginflag:=true;break;end;if flag then begin flag:=false; continue; end;v[code][i]:=true;res[pos,code]:=i;for j:=code+1 to n do for k:=1 to m do if (map[code,i,j,k]=1) then beginres[pos,j]:=k;v[j,k]:=true;break;end;if pos+1<=m then dfs(code,pos+1) else dfs(code+1,1);if flag then exit;for j:=code+1 to n do for k:=1 to m do if map[code,i,j,k]=1 then beginres[pos,j]:=-1;v[j,k]:=false;break;end;v[code][i]:=false;res[pos,code]:=-1;end;
end;beginreadln(test);while test>0 do beginreadln(n,m);filldword(map,sizeof(map)shr 2,0);fillchar(res,sizeof(res),255);for i:=1 to n do beginfor j:=1 to m do read(ch[i][j]);readln;end;flag:=false;readln(x1,y1,cc,c,cc,x2,y2);while not (x1=0) do beginif c='R' then beginmap[x1,y1,x2,y2]:=1;map[x2,y2,x1,y1]:=1;end else beginmap[x1,y1,x2,y2]:=2;map[x2,y2,x1,y1]:=2;end;readln(x1,y1,cc,c,cc,x2,y2);end;for p:=1 to n do for q:=1 to m dofor x1:=1 to n do for y1:=1 to m dofor x2:=1 to n do for y2:=1 to m dobeginif (map[x1,y1,p,q]=1)and(map[x2,y2,p,q]=2) then map[x1,y1,x2,y2]:=2;if (map[x1,y1,p,q]=2)and(map[x2,y2,p,q]=1) then map[x1,y1,x2,y2]:=2;if (map[x1,y1,p,q]=1)and(map[x2,y2,p,q]=1) then map[x1,y1,x2,y2]:=1;end;fillchar(v,sizeof(v),0);for i:=1 to m do res[i,1]:=i;for i:=1 to m do for p:=2 to n do for q:=1 to m doif map[1,i,p,q]=1 then begin res[i,p]:=q; v[p,q]:=true; end;dfs(1,1);dec(test);end;
end.

 

转载于:https://www.cnblogs.com/Thispoet/archive/2011/11/01/2232041.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/267499.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

中service层的作用_浅析Java中dto、dao、service、controller的四层结构

目前我所在的项目组采用的是SpringBoot框架&#xff0c;前端使用BootStrapjQuery。SpringBoot是BS开发框架之一&#xff0c;不用单独开启tomcat服务器&#xff0c;目前比较流行&#xff0c;一般开发大型项目时会将所有的功能细分为许多小模块&#xff0c;每个模块都有dto、dao、…

SCCM 2007系列教程之六使用组策略实现SCCM客户端

SCCM 2007 安装光盘上提供了名为 ConfigMgr2007Installation.adm 的组策略管理模板&#xff0c;可用于配置客户端计算机的安装属性。1、使用 Windows 组策略对象编辑器等编辑器来将管理模板 ConfigMgr2007Installation.adm 导入新的或现有的组策略对象。&#xff08;此文件可以…

强化学习

机器学习算法完整版见fenghaootong-github 强化学习原理&#xff08;RL&#xff09; RL与有监督学习、无监督学习的比较&#xff1a; 有监督的学习是从一个已经标记的训练集中进行学习&#xff0c;训练集中每一个样本的特征可以视为是对该situation的描述&#xff0c;而其labe…

python的tool模块_barktools-包含各种有用的python模块和脚本的包-Oscar Bark Modules Scripts...

作者:Oscar Bark### 作者邮箱:kurshid.ognianovprotonmail.com### 首页:https://github.com/BarkenBark/python-tools### 文档:None### 下载链接# barktoolsA collection of utilities I find useful. Yes.Modulesbase_utilsA collection of modules which only depend on the …

非常不错的Nodejs工具:http-console

http-console是一个用nodejs写的类似于CURL的第三方库文件. 可以很直观的发送http请求以及查看返回结果. 安装需求: 1, 安装nodejs 2, 安装npm 3, npm install http-console 我做了个简单的例子: 启动: http-console 127.0.0.1:3000 1, HTTP GET: http://127.0.0.1:3000/&g…

bzoj1058: [ZJOI2007]报表统计

哈哈set卡时过了。 set求前驱的方法&#xff1a;*--b.lower_bound(x) &#xff08;想想写了splay的肉老师就很愉悦啊&#xff09; 弄两个set&#xff0c;一个记录的是位置的值&#xff0c;一个是差值&#xff0c;MIN_SORT_GAP就很简单啊&#xff0c;插入的时候找前驱后继&#…

javascript对象包含哪些要素_重学JavaScript 对象

栏目为大家介绍JavaScript的对象&#xff0c;重新认识。这里我们继续学习两个比较重要的类型&#xff0c;就是 Object 和 Symbol。我们主要讲的是 Object&#xff0c;相对 Object 来说 Symbol 只是一个配角。关于对象这个概念大家非常早就会接触到了&#xff0c;其实人大概在 5…

【iOS开发必收藏】详解iOS应用程序内使用IAP/StoreKit付费、沙盒(SandBox)测试、创建测试账号流程!...

Himi 原创&#xff0c; 欢迎转载&#xff0c;转载请在明显处注明&#xff01; 谢谢。 原文地址&#xff1a;http://blog.csdn.net/xiaominghimi/article/details/6937097 终于在11月公司的游戏即将上线了&#xff0c;那么对于iOS游戏来说当今都是内置道具收费属于主流&#xf…

「BZOJ2879」[Noi2012]美食节

这道题就是 「BZOJ1070」[SCOI2007]修车 的加强版 如果一开始把全部边连上会T 优化的方法是只连用到过和下一次增广可能用到的边。 1 #include<bits/stdc.h>2 using namespace std;3 const int N50,M110,NN100010,oo1e9;4 int n,m,cost[N][M],tot,s,t,p[N],rank[NN],c[NN…

不越狱换壁纸_终于来了!iOS 14.3 正式版,可自动定时换壁纸

嘿嘿&#xff0c;我没有猜错吧&#xff01;iOS 14.3 正式版会在12月15日凌晨时段发布&#xff0c;在前几天我就有提到&#xff0c;这一天会发布&#xff0c;主要是与新品 AirPods Max 发售时间与iOS 14.3正式版发布时间一致。其次这次发布iOS 14.3正式版更新内容与 iOS 14.3 RC…

Hibernate【inverse和cascade属性】知识要点

Inverse属性 Inverse属性&#xff1a;表示控制权是否转移.. true:控制权已转移【当前一方没有控制权】false&#xff1a;控制权没有转移【当前一方有控制权】Inverse属性&#xff0c;是在维护关联关系的时候起作用的。只能在“一”的一方中使用该属性&#xff01;Inverse属性的…

[转]HOWTO do Linux kernel development - take 3 (中文版)

打好linux基础&#xff0c;不断的跟随这篇文章中的建议&#xff0c;适应linux kernel开发的流程。虽然需要很久甚至几年的时间&#xff0c;但我相信坚持就会前进&#xff01;加油&#xff01; HOWTO do Linux kernel development - take 3 (中文版) 译者&#xff1a;张乐 rober…

中list如何清空_如何根据索引删除 list 中的元素

这个问题很简单, 首先想到的就是a list(range(10)) del a[2]这个就可以很方便的删除掉 a 中的第 3 个元素.如果我想删除多个元素怎么办, 比如我想删除第 3, 4, 5, 6 个元素? 这个也很好办:a list(range(10)) del a[2:6]那么我要删除的元素的索引不连续呢? 比如我要删除第 3…

sql server紧急状态下登录脚本

--打开xp_cmdshell功能 EXEC [sys].[sp_configure] configname xp_cmdshell, -- varchar(35)configvalue 1 -- int 4 RECONFIGURE WITH override--修改注册表&#xff0c;修改身份验证为混合验证方式 USE [master] GOEXEC xp_instance_regwrite NHKEY_LOCAL_MACHINE, NSoftwa…

第一次项目之后...

从开始学习php不知不觉已经过去两个多月了&#xff0c;其中经历了各种各样以前没有经历过的生活和学习&#xff0c;在将近三个月的学习生活中我完成了第一个php项目。要说感觉&#xff0c;还真有些奇特&#xff0c;从开始连php是什么到现在能够亲手写出一个像模像样的网站就好像…

查询时拼接两列数据_如何用VBA代码查询两列数据差异?

爱就一个字&#xff0c;我只说一次……北京市第三交通委提醒您&#xff1a;代码千万条&#xff0c;注释第一条&#xff0c;命名不规范&#xff0c;修订两行泪……咳&#xff0c;给大家拜晚年了&#xff0c;再提前祝大家元宵快乐……我们今天和大家分享的内容是如何用VBA代码查询…

setTimeout详解

https://www.cnblogs.com/wzndkj/p/7069331.html 一、setTimeout基础 setTimeout(func|code,delay);第一个参数表示将要推迟的函数名或者一段代码&#xff0c;第二个参数表示推迟执行的毫秒数eg: console.log(1); setTimeout(console.log(2),1000); console.log(3);answer: 1 3…

Kappa电商负责人顾皓澜:电商业务一直保持盈利

Kappa电商负责人顾皓澜&#xff08;TechWeb配图&#xff09; 【TechWeb报道】10月初&#xff0c;闹得沸沸扬扬的淘宝商城事件吸引了无数互联网用户的目光&#xff0c;处于漩涡中心的淘宝商城当仁不让地挤入话题排行榜&#xff0c;商城上大小卖家的命运也牵动了众多消费者的心。…

python abs(3+4j)_表达式 abs(3+4j) 的值为 ____________ 。_学小易找答案

【单选题】REHL6/Centos6中重启网络服的命令是( ) 【单选题】在故障分析时,对变压器,以下说法不正确的是( ) 【填空题】表达式 chr(ord(A)+1) 的值为 ____________________ 。 【填空题】 【简答题】 【简答题】请提交实验报告 【单选题】电力系统发生三相短路时,短路电流知包含…

Citrix VDI-in-a-Box 第二篇:架构篇

前言&#xff1a;为什么Citrix会收购Kaviza&#xff0c;就是因为其VDI-in-a-Box产品架构比较简单。 本文重点描述其架构和安装要求。 如果你想了解一个东西&#xff0c;首先必须了解其架构。 vdiManager是管理整个架构的工具&#xff0c;所有的虚拟机都运行在Hypervisor上。整 …