写一段深度搜索的c++代码
时间: 2023-03-13 12:52:11 浏览: 76
#include <stdio.h>
int main()
{
int array[100], search, c, n;
printf("输入元素个数: ");
scanf("%d", &n);
printf("输入%d个整数: ", n);
for (c = 0; c < n; c++)
scanf("%d", &array[c]);
printf("输入要搜索的整数: ");
scanf("%d", &search);
for (c = 0; c < n; c++)
{
if (array[c] == search) /* 如果找到了就退出循环 */
{
printf("%d 在第 %d 个位置。\n", search, c+1);
break;
}
}
if (c == n)
printf("没有找到 %d。\n", search);
return 0;
}
相关问题
请写一段深度搜索的C++代码
以下是一个简单的深度优先搜索的C++代码示例,用于从给定的起点遍历无向图:
```c++
#include <iostream>
#include <vector>
#include <stack>
using namespace std;
vector<int> adj[100001]; // 存储无向图的邻接表
bool visited[100001]; // 存储每个节点是否被访问
stack<int> st; // 存储深度优先搜索时的节点栈
// 深度优先搜索函数
void dfs(int start) {
visited[start] = true; // 标记起点已被访问
st.push(start); // 将起点入栈
while (!st.empty()) { // 当栈不为空时,继续搜索
int cur = st.top(); // 取出栈顶的节点
st.pop(); // 弹出栈顶节点
cout << cur << " "; // 输出当前节点
for (int i = 0; i < adj[cur].size(); i++) { // 遍历当前节点的邻居节点
int next = adj[cur][i];
if (!visited[next]) { // 如果邻居节点未被访问
visited[next] = true; // 标记邻居节点已被访问
st.push(next); // 将邻居节点入栈
}
}
}
}
int main() {
int n, m, start;
cin >> n >> m >> start; // 输入节点数,边数和起点
for (int i = 0; i < m; i++) {
int u, v;
cin >> u >> v; // 输入每条边的起点和终点
adj[u].push_back(v); // 存储无向图的邻接表
adj[v].push_back(u);
}
dfs(start); // 从起点开始深度优先搜索
return 0;
}
```
该程序通过邻接表存储无向图,使用一个布尔数组 `visited` 记录每个节点是否被访问过,使用栈 `st` 存储深度优先搜索时的节点顺序。在 `dfs` 函数中,首先标记起点已被访问,并将其入栈。然后,当栈不为空时,取出栈顶的节点,输出该节点,并遍历其邻居节点,将未被访问过的邻居节点入栈。最终,整个无向图都会被遍历一遍。
写一个c++的深度搜索的代码
当然,我会尽力回答您的问题。以下是一个简单的深度优先搜索的C语言代码示例:
```c
#include <stdio.h>
// 定义常量
#define MAX_N 100
int n; // 顶点数
int m[MAX_N][MAX_N]; // 邻接矩阵
int visited[MAX_N]; // 标记是否已经访问
// 深度优先搜索算法
void dfs(int x)
{
int i;
visited[x] = 1; // 标记当前顶点已经访问
printf("%d ", x); // 输出当前顶点的编号
for (i = 0; i < n; i++)
{
if (m[x][i] && !visited[i]) // 如果当前顶点和顶点i之间有边且顶点i未被访问
{
dfs(i); // 递归访问顶点i
}
}
}
int main()
{
// 读入图的顶点数和邻接矩阵
scanf("%d", &n);
int i, j;
for (i = 0; i < n; i++)
{
for (j = 0; j < n; j++)
{
scanf("%d", &m[i][j]);
}
}
// 对每个连通分量分别进行深度优先搜索
for (i = 0; i < n; i++)
{
if (!visited[i])
{
dfs(i);
}
}
return 0;
}
```
这段代码实现了基本的深度优先搜索算法,可以通过邻接矩阵表示图的关系,输出每个连通分量的遍历序列。当然,根据具体的应用场景可以对算法进行更进一步的优化,例如使用邻接表代替邻接矩阵,以降低空间复杂度等。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)