网页
资讯
视频
图片
知道
文库
贴吧
地图
采购
进入贴吧
全吧搜索
吧内搜索
搜贴
搜人
进吧
搜标签
日
一
二
三
四
五
六
签到排名:今日本吧第
个签到,
本吧因你更精彩,明天继续来努力!
本吧签到人数:0
一键签到
可签
7
级以上的吧
50
个
一键签到
本月漏签
0
次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行
补签
。
连续签到:
天 累计签到:
天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
03月24日
漏签
0
天
柳叶初零吧
关注:
8
贴子:
598
看贴
图片
吧主推荐
游戏
1
2
下一页
尾页
15
回复贴,共
2
页
,跳到
页
确定
<返回柳叶初零吧
>0< 加载中...
深度优先搜索
只看楼主
收藏
回复
redflowerfu
活跃吧友
5
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
深度优先搜索是一种枚举策略,
即从一个状态开始,不断将其扩展至下一个状态,直至无法扩展;
而后回到最近的,还有未扩展状态的节点,继续往其他方向扩展。
以此枚举所有可能的解。
采用递归回溯方法进行深度优先搜索也称“回溯法”
送TA礼物
IP属地:广东
1楼
2011-03-03 19:10
回复
redflowerfu
活跃吧友
5
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
深度优先搜索在穷举时极为常用。
一些例题:
1.全排列
输入正整数n,按字典顺序输出1~n所有可能的排列
如输入3,输出123,132,213,231,312,321。
2.八皇后问题
在8x8的国际象棋棋盘上放置8个皇后,使其不能互相攻击到(即任意两个皇后不能同行同列同对角线),问有多少种放法。
3.加法拆分
输入正整数n,将其分解成所有可能的相加的形式并输出
如n=4,则输出
4=1+1+1+1
4=1+1+2
4=1+3
4=2+2
4.0-1背包
有n个物品,其中第i个物品具有Vi的价值和Wi的重量。现有一背包,能装下总重量为M的物品。问能装入背包的物品最大价值是多少?
IP属地:广东
2楼
2011-03-03 19:17
回复
收起回复
redflowerfu
活跃吧友
5
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
回溯法一般模板:
void f(当前步) {
for (枚举状态){
if 可用 {
if 完成一个方案
输出,记录;
做标记;
f(下一步);
取消标记;
}
}
}
IP属地:广东
3楼
2011-03-13 19:33
回复
收起回复
redflowerfu
活跃吧友
5
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
或者
void f(当前步) {
if 完成一个方案 {
输出,记录;
return;
}
for (枚举状态){
if 可用 {
做标记;
f(下一步);
取消标记;
}
}
}
IP属地:广东
4楼
2011-03-13 19:34
回复
收起回复
redflowerfu
活跃吧友
5
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
回复:3楼
“记录”后面加return
IP属地:广东
5楼
2011-03-13 19:35
回复
收起回复
redflowerfu
活跃吧友
5
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
回复:6楼
额……错了= =
是continue
IP属地:广东
7楼
2011-03-13 19:52
回复
收起回复
redflowerfu
活跃吧友
5
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
全排列标程(应该结构比较清晰了,比较好消化理解):
#include <stdio.h>
int a[100],n,used[100]={0};
void prt() { // 输出
int k;
for (k=1;k<=n;k++)
printf("%d",a[k]);
printf("\n");
}
void find(int i) {
int j;
if (i>n) { // i>n意味着排列已经完成
prt();
return;
}
for (j=1;j<=n;j++)
if (used[j]==0) {
used[j]++; // 记录该数已经用过
a[i]=j;
find(i+1);
used[j]--; // 枚举下一个之前要取消之前的记录
a[i]=0;
}
}
int main() {
scanf("%d",&n);
find(1);
getchar();
getchar();
}
IP属地:广东
8楼
2011-03-13 22:49
回复
收起回复
redflowerfu
活跃吧友
5
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
那个used[j]++; 和used[j]--;还是分别改成赋值1或0吧,就是1表示已经使用过,0表示未使用
IP属地:广东
9楼
2011-03-13 22:58
回复
收起回复
redflowerfu
活跃吧友
5
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
唉……希望你妈能理解吧……
信息学奥林匹克竞赛也是中学五门奥赛之一啊……
多少人指望着拿个省一求保送呢……
IP属地:广东
10楼
2011-03-13 22:59
回复
收起回复
redflowerfu
活跃吧友
5
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
说实话柳你学得挺快的……
而且你们省比起我们湖南来说,拿信息学竞赛分区联赛省一等奖的门槛要低出不少……
你还需要看的:半本《数据结构》+ 两本《奥赛经典》(基础篇、提高篇)拿省一基本没问题了
另外大学理工科几乎必修C/C++,计算机等级考试也必须会C/C++。现在学也是为以后打下基础。
IP属地:广东
11楼
2011-03-13 23:10
回复
收起回复
redflowerfu
活跃吧友
5
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
回复:13楼
所有对角线
IP属地:广东
14楼
2011-03-15 22:50
回复
收起回复
redflowerfu
活跃吧友
5
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
回复:3楼
回复:4楼
这两个模板选一个记住了做搜索就方便些,另外Debug技巧真的很重要。
IP属地:广东
17楼
2011-03-27 00:29
回复
收起回复
redflowerfu
活跃吧友
5
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
回复:7楼
别忘了这个改动
IP属地:广东
18楼
2011-03-27 00:29
回复
收起回复
登录百度账号
扫二维码下载贴吧客户端
下载贴吧APP
看高清直播、视频!
贴吧热议榜
1
饺子导演票房破200亿
2043240
2
iG连斩三队什么水平
1462905
3
中美六代机对比优势在谁
1062531
4
日本人宁愿饿死也不吃中国大米
900198
5
吧友长文怒批无职转生不良三观
725000
6
三只羊缴完罚款堂堂复活
597696
7
法拉利双车违规跑了个寂寞
464324
8
不敢相信7月新番吃得有多好了
332882
9
电锯人蕾塞篇定档9月19日
295911
10
哪吒和白雪公主海外上座率现状
257020
贴吧页面意见反馈
违规贴吧举报反馈通道
贴吧违规信息处理公示