Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
CSDN 技术社区
skill_tree_algorithm
提交
908ee98e
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看板
提交
908ee98e
编写于
10月 29, 2021
作者:
每日一练社区
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
update exercises
上级
0520722d
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
217 addition
and
6 deletion
+217
-6
data/1.算法初阶/1.蓝桥杯/放棋子/solution.md
data/1.算法初阶/1.蓝桥杯/放棋子/solution.md
+217
-6
未找到文件。
data/1.算法初阶/1.蓝桥杯/放棋子/solution.md
浏览文件 @
908ee98e
...
...
@@ -5,30 +5,241 @@
## aop
### before
```
cpp
#include <iostream>
#include <cstdio>
int
N
=
0
;
bool
CheckStoneNum
(
int
x
[][
6
])
{
for
(
int
k
=
0
;
k
<
6
;
++
k
)
{
int
NumRow
=
0
,
NumCol
=
0
;
for
(
int
i
=
0
;
i
<
6
;
++
i
)
{
if
(
x
[
k
][
i
])
NumRow
++
;
if
(
x
[
i
][
k
])
NumCol
++
;
}
if
(
NumRow
!=
3
||
NumCol
!=
3
)
return
false
;
}
return
true
;
}
int
GetRowStoneNum
(
int
x
[][
6
],
int
r
)
{
int
sum
=
0
;
for
(
int
i
=
0
;
i
<
6
;
++
i
)
{
if
(
x
[
r
][
i
])
sum
++
;
}
return
sum
;
}
int
GetColStoneNum
(
int
x
[][
6
],
int
c
)
{
int
sum
=
0
;
for
(
int
i
=
0
;
i
<
6
;
++
i
)
{
if
(
x
[
i
][
c
])
sum
++
;
}
return
sum
;
}
void
show
(
int
x
[][
6
])
{
for
(
int
i
=
0
;
i
<
6
;
++
i
)
{
for
(
int
j
=
0
;
j
<
6
;
++
j
)
{
printf
(
"%2d"
,
x
[
i
][
j
]);
}
printf
(
"
\n
"
);
}
printf
(
"
\n
"
);
}
void
f
(
int
x
[][
6
],
int
r
,
int
c
);
void
GoNext
(
int
x
[][
6
],
int
r
,
int
c
)
{
if
(
c
<
6
)
{
f
(
x
,
r
,
c
+
1
);
}
else
{
f
(
x
,
r
+
1
,
0
);
}
}
```
### after
```
cpp
int
main
()
{
int
x
[
6
][
6
]
=
{
{
1
,
0
,
0
,
0
,
0
,
0
},
{
0
,
0
,
1
,
0
,
1
,
0
},
{
0
,
0
,
1
,
1
,
0
,
1
},
{
0
,
1
,
0
,
0
,
1
,
0
},
{
0
,
0
,
0
,
1
,
0
,
0
},
{
1
,
0
,
1
,
0
,
0
,
1
},
};
f
(
x
,
0
,
0
);
printf
(
"%d
\n
"
,
N
);
return
0
;
}
```
## 答案
```
cpp
void
f
(
int
x
[][
6
],
int
r
,
int
c
)
{
if
(
r
==
6
)
{
if
(
CheckStoneNum
(
x
))
{
N
++
;
show
(
x
);
}
return
;
}
if
(
x
[
r
][
c
])
{
GoNext
(
x
,
r
,
c
);
return
;
}
int
rr
=
GetRowStoneNum
(
x
,
r
);
int
cc
=
GetColStoneNum
(
x
,
c
);
if
(
cc
>=
3
)
{
GoNext
(
x
,
r
,
c
);
}
else
if
(
rr
>=
3
)
{
f
(
x
,
r
+
1
,
0
);
}
else
{
x
[
r
][
c
]
=
1
;
GoNext
(
x
,
r
,
c
);
x
[
r
][
c
]
=
0
;
if
(
!
(
3
-
rr
>=
6
-
c
||
3
-
cc
>=
6
-
r
))
{
GoNext
(
x
,
r
,
c
);
}
}
}
```
## 选项
### A
```
cpp
void
f
(
int
x
[][
6
],
int
r
,
int
c
)
{
if
(
r
==
6
)
{
if
(
CheckStoneNum
(
x
))
{
N
++
;
show
(
x
);
}
return
;
}
if
(
x
[
r
][
c
])
{
GoNext
(
x
,
r
,
c
);
return
;
}
int
rr
=
GetRowStoneNum
(
x
,
r
);
int
cc
=
GetColStoneNum
(
x
,
c
);
if
(
cc
>=
3
)
{
GoNext
(
x
,
r
,
c
);
}
else
if
(
rr
>=
3
)
{
f
(
x
,
r
+
1
,
0
);
}
else
{
x
[
r
][
c
]
=
1
;
GoNext
(
x
,
r
,
c
);
x
[
r
][
c
]
=
0
;
}
}
```
### B
```
cpp
void
f
(
int
x
[][
6
],
int
r
,
int
c
)
{
if
(
r
==
6
)
{
if
(
CheckStoneNum
(
x
))
{
N
++
;
show
(
x
);
}
return
;
}
if
(
x
[
r
][
c
])
{
GoNext
(
x
,
r
,
c
);
return
;
}
int
rr
=
GetRowStoneNum
(
x
,
r
);
int
cc
=
GetColStoneNum
(
x
,
c
);
if
(
cc
>=
3
)
{
GoNext
(
x
,
r
,
c
);
}
else
if
(
rr
>=
3
)
{
f
(
x
,
r
+
1
,
0
);
}
else
{
if
(
!
(
3
-
rr
>=
6
-
c
||
3
-
cc
>=
6
-
r
))
{
GoNext
(
x
,
r
,
c
);
}
}
}
```
### C
```
cpp
void
f
(
int
x
[][
6
],
int
r
,
int
c
)
{
if
(
r
==
6
)
{
if
(
CheckStoneNum
(
x
))
{
N
++
;
show
(
x
);
}
return
;
}
if
(
x
[
r
][
c
])
{
GoNext
(
x
,
r
,
c
);
return
;
}
int
rr
=
GetRowStoneNum
(
x
,
r
);
int
cc
=
GetColStoneNum
(
x
,
c
);
if
(
cc
>=
3
)
{
GoNext
(
x
,
r
,
c
);
}
else
if
(
rr
>=
3
)
{
f
(
x
,
r
+
1
,
0
);
}
else
{
x
[
r
][
c
]
=
0
;
if
(
!
(
3
-
rr
>=
6
-
c
||
3
-
cc
>=
6
-
r
))
{
GoNext
(
x
,
r
,
c
);
}
}
}
```
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录