zoukankan
html css js c++ java
今天的一个哈密顿图 写了一个恶心的死搜
#include
<
string
.h
>
#include
<
stdio.h
>
int
m, n;
bool
link[
22
][
22
];
bool
v[
22
][
22
];
bool
ll;
bool
lll;
int
bi,bj,ei,ej;
int
c1;
void
dfs(
int
i,
int
j)
{
v[i][j]
=
1
;
if
(i
-
1
>=
0
&&
v[i
-
1
][j]
==
0
&&
link[i
-
1
][j]
==
0
)
{
dfs(i
-
1
,j);
}
if
(j
-
1
>=
0
&&
v[i][j
-
1
]
==
0
&&
link[i][j
-
1
]
==
0
)
{
dfs(i,j
-
1
);
}
if
(i
+
1
<
n
&&
v[i
+
1
][j]
==
0
&&
link[i
+
1
][j]
==
0
)
{
dfs(i
+
1
,j);
}
if
(j
+
1
<
m
&&
v[i][j
+
1
]
==
0
&&
link[i][j
+
1
]
==
0
)
{
dfs(i,j
+
1
);
}
}
void
DFS(
int
i,
int
j)
{
bool
ss
=
0
;
v[i][j]
=
1
;
bool
vv[
21
][
21
];
int
i1,j1;
for
(i1
=
0
;i1
<
n;i1
++
)
for
(j1
=
0
;j1
<
m;j1
++
)
vv[i1][j1]
=
v[i1][j1];
v[i][j]
=
0
;
int
ccc
=
0
;
for
(i1
=
0
;i1
<
n;i1
++
)
for
(j1
=
0
;j1
<
m;j1
++
)
{
if
(v[i1][j1]
==
0
&&
link[i1][j1]
==
0
)
{
int
cc
=
0
;
if
(i1
-
1
>=
0
&&
v[i1
-
1
][j1]
==
0
&&
link[i1
-
1
][j1]
==
0
)
cc
++
;
if
(j1
-
1
>=
0
&&
v[i1][j1
-
1
]
==
0
&&
link[i1][j1
-
1
]
==
0
)
cc
++
;
if
(i1
+
1
<
n
&&
v[i1
+
1
][j1]
==
0
&&
link[i1
+
1
][j1]
==
0
)
cc
++
;
if
(j1
+
1
<
m
&&
v[i1][j1
+
1
]
==
0
&&
link[i1][j1
+
1
]
==
0
)
cc
++
;
if
(cc
==
1
)
{
ccc
++
;
}
}
}
bool
con
=
1
;
if
(ccc
>
2
) con
=
0
;
v[i][j]
=
1
;
for
(i1
=
0
;i1
<
n;i1
++
)
for
(j1
=
0
;j1
<
m;j1
++
)
if
(link[i1][j1]
==
0
&&
v[i1][j1]
==
0
)
dfs(i1,j1);
for
(i1
=
0
;i1
<
n;i1
++
)
for
(j1
=
0
;j1
<
m;j1
++
)
if
(v[i1][j1]
==
0
&&
link[i1][j1]
==
0
)
con
=
0
;
for
(i1
=
0
;i1
<
n;i1
++
)
for
(j1
=
0
;j1
<
m;j1
++
)
v[i1][j1]
=
vv[i1][j1];
if
(con)
{
if
(i
-
1
>=
0
&&
v[i
-
1
][j]
==
0
&&
link[i
-
1
][j]
==
0
)
{
for
(i1
=
0
;i1
<
n;i1
++
)
for
(j1
=
0
;j1
<
m;j1
++
)
v[i1][j1]
=
vv[i1][j1];
DFS(i
-
1
,j);
ss
=
1
;
}
if
(j
-
1
>=
0
&&
v[i][j
-
1
]
==
0
&&
link[i][j
-
1
]
==
0
)
{
for
(i1
=
0
;i1
<
n;i1
++
)
for
(j1
=
0
;j1
<
m;j1
++
)
v[i1][j1]
=
vv[i1][j1];
DFS(i,j
-
1
);
ss
=
1
;
}
if
(i
+
1
<
n
&&
v[i
+
1
][j]
==
0
&&
link[i
+
1
][j]
==
0
)
{
for
(i1
=
0
;i1
<
n;i1
++
)
for
(j1
=
0
;j1
<
m;j1
++
)
v[i1][j1]
=
vv[i1][j1];
DFS(i
+
1
,j);
ss
=
1
;
}
if
(j
+
1
<
m
&&
v[i][j
+
1
]
==
0
&&
link[i][j
+
1
]
==
0
)
{
for
(i1
=
0
;i1
<
n;i1
++
)
for
(j1
=
0
;j1
<
m;j1
++
)
v[i1][j1]
=
vv[i1][j1];
DFS(i,j
+
1
);
ss
=
1
;
}
if
(ss
==
0
)
{
ll
=
1
;
for
(i1
=
0
;i1
<
n;i1
++
)
for
(j1
=
0
;j1
<
m;j1
++
)
{
if
(v[i1][j1]
==
0
&&
link[i1][j1]
==
0
)
{
ll
=
0
;
i1
=
n,j1
=
m;
break
;
}
}
if
(ll)
{
lll
=
1
;
return
;}
}
}
}
int
main()
{
while
(scanf(
"
%d%d
"
,
&
n,
&
m)
==
2
)
{
lll
=
0
;
ll
=
1
;
memset(v,
0
,
sizeof
(v));
if
(m
==
0
&&
n
==
0
)
break
;
int
i, j;
for
(i
=
0
;i
<
n;i
++
)
{
for
(j
=
0
;j
<
m;j
++
)
{
scanf(
"
%d
"
,
&
link[i][j]);
}
}
ei
=
21
,ej
=
21
;
c1
=
0
;
for
(i
=
0
;i
<
n;i
++
)
for
(j
=
0
;j
<
m;j
++
)
{
if
(v[i][j]
==
0
&&
link[i][j]
==
0
)
{
int
cc
=
0
;
if
(i
-
1
>=
0
&&
v[i
-
1
][j]
==
0
&&
link[i
-
1
][j]
==
0
)
cc
++
;
if
(j
-
1
>=
0
&&
v[i][j
-
1
]
==
0
&&
link[i][j
-
1
]
==
0
)
cc
++
;
if
(i
+
1
<
n
&&
v[i
+
1
][j]
==
0
&&
link[i
+
1
][j]
==
0
)
cc
++
;
if
(j
+
1
<
m
&&
v[i][j
+
1
]
==
0
&&
link[i][j
+
1
]
==
0
)
cc
++
;
if
(cc
==
1
)
{
bi
=
i,bj
=
j;
c1
++
;
i
=
n,j
=
m;
v[bi][bj]
=
1
;
break
;
}
}
}
for
(i
=
0
;i
<
n;i
++
)
for
(j
=
0
;j
<
m;j
++
)
{
if
(v[i][j]
==
0
&&
link[i][j]
==
0
)
{
int
cc
=
0
;
if
(i
-
1
>=
0
&&
v[i
-
1
][j]
==
0
&&
link[i
-
1
][j]
==
0
)
cc
++
;
if
(j
-
1
>=
0
&&
v[i][j
-
1
]
==
0
&&
link[i][j
-
1
]
==
0
)
cc
++
;
if
(i
+
1
<
n
&&
v[i
+
1
][j]
==
0
&&
link[i
+
1
][j]
==
0
)
cc
++
;
if
(j
+
1
<
m
&&
v[i][j
+
1
]
==
0
&&
link[i][j
+
1
]
==
0
)
cc
++
;
if
(cc
==
1
)
{
c1
++
;
ei
=
i,ej
=
j;
i
=
n,j
=
m;
break
;
}
}
}
if
(c1
==
1
||
c1
==
2
)
{
memset(v,
0
,
sizeof
(v));
DFS(bi,bj);
}
if
(c1
==
0
)
{
for
(i
=
0
;i
<
n;i
++
)
{
for
(j
=
0
;j
<
m;j
++
)
{
if
(link[i][j]
==
0
)
{
memset(v,
0
,
sizeof
(v));
DFS(i,j);
}
if
(lll
==
1
)
{
i
=
n,j
=
m;
break
;
}
}
}
}
if
(lll)
printf(
"
Yes\n
"
);
else
printf(
"
No\n
"
);
}
return
0
;
}
查看全文
相关阅读:
统计字符的有效字数
Ubuntu Wifi网络连接不上或经常断网
Git实战指南----跟着haibiscuit学Git(第十一篇)
Git实战指南----跟着haibiscuit学Git(第十篇)
Git实战指南----跟着haibiscuit学Git(第九篇)
Git实战指南----跟着haibiscuit学Git(第八篇)
Git实战指南----跟着haibiscuit学Git(第七篇)
Git实战指南----跟着haibiscuit学Git(第六篇)
linux之网络命令
Ceph实战入门之安部署篇
原文地址:https://www.cnblogs.com/SQL/p/913608.html
最新文章
韦东山嵌入式Linux学习笔记07--Nandflash
韦东山嵌入式Linux学习笔记05--存储管理器
韦东山嵌入式Linux学习笔记04--点亮开发板的一个LED灯
韦东山嵌入式Linux学习笔记03--如何搭建软件环境
韦东山嵌入式Linux学习笔记02--如何给开发板烧录程序
韦东山嵌入式Linux学习笔记01--转载: 板子ping不通PC怎么办
3.3-常用汇编指令
Linux 常用命令及详细使用方法
linux SFTP用户创建 不允许用户登录,并且连接只允许在制定的目录下进行操作
MySQL面试题
热门文章
MySQL常见问题
Ansible
基于mysqld_multi实现MySQL 5.7.24多实例多进程配置
互联网公司分布式集群架构图入门解析(简单通俗易懂,超详细)
Tomcat中session复制技术
构建LVS负载均衡集群——NAT模式(最简单方式)
LVS 负载均衡——直接路由模式DR
LVS负载均衡实现双向热备
Redis分布式锁面临的问题和解决方案
Tomcat静态资源访问404问题
Copyright © 2011-2022 走看看