广搜练习

 题目描述:
图表示的是从城市A到城市H的交通图。从图中可以看出,从城市A到城市H要经过若干个城市。现要找出一条经过城市最少的一条路线。

 

【思路】:经过的城市最少然后。。广搜。。因为一层一层的找嘛,先找到的一定是经过城市最少的

【代码】

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cstdlib>
 4 using namespace std;
 5 bool ccan[9][9]={{0,0,0,0,0,0,0,0,0},
 6                  {0,1,0,0,0,1,0,1,1},
 7                  {0,0,1,1,1,1,0,1,1},
 8                  {0,0,1,1,0,0,1,1,1},
 9                  {0,0,1,0,1,1,1,0,1},
10                  {0,1,1,0,1,1,1,0,0},
11                  {0,0,0,1,1,1,1,1,0},
12                  {0,1,1,1,0,0,1,1,0},
13                  {0,1,1,1,1,0,0,0,1}};//邻接矩阵 ,0表示可以走,1表示不可以走 
14 int qque[100],pre[100];//队列和前驱结点,用来输出路径 
15 bool visited[10];//是否入队列 
16 int oout(int);//输出路径 
17 void bfs();//广搜 
18 int main()
19 {
20     dfs();
21     return 0;
22 }
23 void bfs()
24 {
25     int head=0,tail=1;//队列的指针 
26     qque[1]=1;pre[1]=0;visited[1]=1;//记录队列的 第一个元素是1(A),它的前驱是0,它已经访问了 
27     do
28     {
29         head++;
30         for(int i=1;i<=8;i++)//寻找A,B,C,D,E,F,G,H中能够走的 
31         {
32             if(!ccan[qque[head]][i]&&!visited[i])//能都走并且没有访问 
33             {
34                 tail++;
35                 qque[tail]=i;//入队 
36                 visited[i]=1;//打标记 
37                 pre[i]=qque[head];//记录前驱 
38                 if(i==8)//当搜到H,输出 
39                 {
40                     oout(tail);
41                     head=tail;
42                     break;
43                 }
44             }
45         }
46     }while(head<tail);
47 }
48 int oout(int x)
49 {
50     cout<<char(qque[x]+64);//首先输出H 
51     while(pre[x]!=0)
52     {
53          x=pre[x];//不要 int x=pre[x]再重新定义是不可以的,那样形参x就不变了orz 
54         cout<<"---"<<char(x+64);
55     }
56     cout<<endl;
57 }

 

 

转载于:https://www.cnblogs.com/zzyh/p/6650075.html

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
如果你想进行Spring Boot的练习,以下是一些建议: 1. 创建一个简单的Spring Boot项目:使用Spring Initializr(https://start.spring.io/)创建一个基本的Spring Boot项目,选择合适的依赖项(如Spring Web、Spring Data JPA等)。 2. 控制器和路由:创建一个控制器类并添加一些路由(使用`@RequestMapping`或`@GetMapping`等注解),练习处理HTTP请求并返回响应。 3. 数据库操作:使用Spring Data JPA或其他ORM框架连接数据库,并编写一些CRUD操作的方法,练习数据库的增删改查。 4. 配置文件和属性:学习如何使用application.properties或application.yml文件来配置应用程序的属性,例如数据库连接信息、日志级别等。 5. RESTful API:设计并实现一组RESTful API,使用Spring Boot的注解(如`@RestController`、`@GetMapping`、`@PostMapping`等)处理请求和响应。 6. 异常处理:练习处理异常情况,如自定义异常类、全局异常处理器等。 7. 安全性和认证:学习如何使用Spring Security来保护你的应用程序,实现用户认证和授权。 8. 单元测试:编写单元测试来验证你的代码逻辑是否正确,使用Spring Boot提供的测试框架(如JUnit、MockMvc等)进行测试。 9. 日志记录:学习如何配置和使用日志记录框架(如Logback、Log4j),记录应用程序的运行日志。 10. 打包和部署:练习将你的Spring Boot应用程序打包成可执行的JAR文件,并部署到本地或远程服务器上。 以上是一些Spring Boot练习的建议,希望能帮助你开始学习和实践Spring Boot。如果还有其他问题,请继续提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值