Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
CSDN 技术社区
skill_tree_algorithm
提交
fdc89a9b
S
skill_tree_algorithm
项目概览
CSDN 技术社区
/
skill_tree_algorithm
通知
9
Star
8
Fork
1
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
1
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
S
skill_tree_algorithm
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
1
Issue
1
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
提交
fdc89a9b
编写于
10月 28, 2021
作者:
每日一练社区
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
update exercises
上级
46e221cd
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
190 addition
and
5 deletion
+190
-5
data/1.算法初阶/1.蓝桥杯/7段码/solution.md
data/1.算法初阶/1.蓝桥杯/7段码/solution.md
+190
-5
未找到文件。
data/1.算法初阶/1.蓝桥杯/7段码/solution.md
浏览文件 @
fdc89a9b
...
...
@@ -21,30 +21,215 @@
## aop
### before
```
cpp
#include <iostream>
using
namespace
std
;
int
use
[
10
];
int
ans
,
e
[
10
][
10
],
father
[
10
];
void
init
()
{
e
[
1
][
2
]
=
e
[
1
][
6
]
=
1
;
e
[
2
][
1
]
=
e
[
2
][
7
]
=
e
[
2
][
3
]
=
1
;
e
[
3
][
2
]
=
e
[
3
][
4
]
=
e
[
3
][
7
]
=
1
;
e
[
4
][
3
]
=
e
[
4
][
5
]
=
1
;
e
[
5
][
4
]
=
e
[
5
][
6
]
=
e
[
5
][
7
]
=
1
;
e
[
6
][
1
]
=
e
[
6
][
5
]
=
e
[
6
][
7
]
=
1
;
}
int
find
(
int
a
)
{
if
(
father
[
a
]
==
a
)
return
a
;
father
[
a
]
=
find
(
father
[
a
]);
return
father
[
a
];
}
```
### after
```
cpp
int
main
()
{
init
();
dfs
(
1
);
cout
<<
ans
;
return
0
;
}
```
## 答案
```
cpp
void
dfs
(
int
d
)
{
if
(
d
>
7
)
{
for
(
int
i
=
1
;
i
<=
7
;
i
++
)
{
father
[
i
]
=
i
;
}
for
(
int
i
=
1
;
i
<
8
;
i
++
)
{
for
(
int
j
=
1
;
j
<
8
;
j
++
)
{
if
(
e
[
i
][
j
]
==
1
&&
use
[
i
]
&&
use
[
j
])
{
int
fx
=
find
(
i
);
int
fy
=
find
(
j
);
if
(
fx
!=
fy
)
{
father
[
fx
]
=
fy
;
}
}
}
}
int
k
=
0
;
for
(
int
i
=
1
;
i
<
8
;
i
++
)
{
if
(
use
[
i
]
&&
father
[
i
]
==
i
)
{
k
++
;
}
}
if
(
k
==
1
)
{
ans
++
;
}
return
;
}
use
[
d
]
=
1
;
dfs
(
d
+
1
);
use
[
d
]
=
0
;
dfs
(
d
+
1
);
}
```
## 选项
### A
```
cpp
void
dfs
(
int
d
)
{
if
(
d
>
7
)
{
for
(
int
i
=
1
;
i
<=
7
;
i
++
)
{
father
[
i
]
=
i
;
}
for
(
int
i
=
1
;
i
<
8
;
i
++
)
{
for
(
int
j
=
1
;
j
<
8
;
j
++
)
{
if
(
e
[
i
][
j
]
==
1
&&
use
[
i
]
&&
use
[
j
])
{
int
fx
=
find
(
i
);
int
fy
=
find
(
j
);
if
(
fx
!=
fy
)
{
father
[
fx
]
=
fy
;
}
}
}
}
int
k
=
0
;
for
(
int
i
=
1
;
i
<
8
;
i
++
)
{
if
(
father
[
i
]
==
i
)
{
k
++
;
}
}
if
(
k
==
1
)
{
ans
++
;
}
return
;
}
use
[
d
]
=
1
;
dfs
(
d
+
1
);
use
[
d
]
=
0
;
dfs
(
d
+
1
);
}
```
### B
```
cpp
void
dfs
(
int
d
)
{
if
(
d
>
7
)
{
for
(
int
i
=
1
;
i
<=
7
;
i
++
)
{
father
[
i
]
=
i
;
}
for
(
int
i
=
1
;
i
<
8
;
i
++
)
{
for
(
int
j
=
1
;
j
<
8
;
j
++
)
{
if
(
e
[
i
][
j
]
==
1
)
{
int
fx
=
find
(
i
);
int
fy
=
find
(
j
);
if
(
fx
!=
fy
)
{
father
[
fx
]
=
fy
;
}
}
}
}
int
k
=
0
;
for
(
int
i
=
1
;
i
<
8
;
i
++
)
{
if
(
use
[
i
]
&&
father
[
i
]
==
i
)
{
k
++
;
}
}
if
(
k
==
1
)
{
ans
++
;
}
return
;
}
use
[
d
]
=
1
;
dfs
(
d
+
1
);
use
[
d
]
=
0
;
dfs
(
d
+
1
);
}
```
### C
```
cpp
void
dfs
(
int
d
)
{
if
(
d
>
7
)
{
for
(
int
i
=
1
;
i
<=
7
;
i
++
)
{
father
[
i
]
=
i
;
}
int
k
=
0
;
for
(
int
i
=
1
;
i
<
8
;
i
++
)
{
if
(
use
[
i
]
&&
father
[
i
]
==
i
)
{
k
++
;
}
}
if
(
k
==
1
)
{
ans
++
;
}
return
;
}
use
[
d
]
=
1
;
dfs
(
d
+
1
);
use
[
d
]
=
0
;
dfs
(
d
+
1
);
}
```
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录