android广度优先查询图片,超简单的深度优先搜索代码

//深度优先搜索测试

//例:

// 1

// / | \

// / | \

// 2 3---5

// |

// |

// 4

//step1:将存储图的方法称为图的*邻接矩阵存储法*

// 通路用1表示,不通用-1表示,自身为0

// 1 2 3 4 5

// 1 0 1 1 -1 1

// 2 1 0 -1 1 -1

// 3 1 -1 0 -1 1

// 4 -1 1 -1 0 -1

// 5 -1 -1 1 -1 0

// step2:构造二维表

const int NUM = 100;

int road[NUM][NUM];//记录通路

bool book[NUM];//记录是否已经被访问

void BounTable(int n)//初始化

{

for(int i = 1; i <= n; i++)

for(int j = 1; j <= n; j++)

road[i][j] = (i == j) ? 0 : -1;

}

void RoadSet()//路径设置

{

road[1][2] = road[2][1] = 1;

road[1][3] = road[3][1] = 1;

road[2][4] = road[4][2] = 1;

road[3][5] = road[5][3] = 1;

road[1][5] = road[5][1] = 1;

}

void BookSet(int n)//未访问的节点设置为true,为了防止重复访问

{

for(int i = 1; i <= n; i++)

book[i] = true;

}

//v当前节点编号;sum累计访问节点个数;n节点总个数

void dfs(int v,int& sum, int& n)//深度优先搜索

{

cout << v <

sum++;

if(sum == n) return;//若累计访问节点个数等于节点总数,则返回

for(int i = 1; i <= n; i++)

{

if(road[v][i] == 1 && book[i])

{

book[i] = false;

dfs(i,sum,n);//从当前节点往下访问

}

}

}

//深度优先搜索

void dfsTest()

{

int n = 5,sum = 0;

BounTable(n);

RoadSet();

BookSet(n);

book[1] = false;

dfs(1,sum,n);

getchar();

}

//输出 1 2 4 3 5

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值