首页 > 其他分享 >3.31

3.31

时间:2024-03-31 17:38:21浏览次数:20  
标签:nowline ed equals queue subway 3.31 now

所花时间:5小时

代码量:154

博客篇:1

地铁起点到终点的最短路径查询:

使用广度优先遍历,当要访问该站点时先储存在队列,最后出队形式访问

每次访问传入数据:

name:站点名;

now:之前访问的站点字符串总和;

nowline:当前站点的线路;

ed:要到达的站点名称;

i:当前经过站数以及字符串的数组下标;

s:当前经过站点数

此外全局变量:

line[]:所有遍历线路的经过站点字符串数组;

though[]:是否访问过此点;

arrive[]:此线是否到达终点;

sum[]:所有线经过站点数的数组;

核心方法:

public void loops(String name,String now,String nowline,String ed,int i,int s) throws SQLException {
        conn = DBHelpOpen.getConn();
        stmt = conn.createStatement();
        String sql1 = "select * from subway where name = '" + name + "' and linename = '" +nowline+ "'";
        ResultSet rs1 = stmt.executeQuery(sql1);
        rs1.next();
        Subway subway = new Subway();
        subway.setName(rs1.getString("name"));
        subway.setLinename(rs1.getString("linename"));
        subway.setTransfer(rs1.getString("transfer"));
        subway.setPre(rs1.getString("pre"));
        subway.setNext(rs1.getString("next"));
        stmt.close();
        conn.close();
        if(through[getID(subway.getName())-1]){
            return;
        }
        visit(subway.getName());
        if(i==2)
            System.out.println(subway.getName());
        now+="->"+subway.getName();
        sum[i]=s+1;
        s=sum[i];
        line[i]=now;
        System.out.println(subway.getName());
        if(subway.getName().equals(ed)){
            arrive[i]=true;
        }
        else if(subway.getName().equals("东直门")||subway.getName().equals("宋家庄")||subway.getName().equals("苹果园")||subway.getName().equals("金安桥")){
            if(!subway.getNext().equals("空")) {
                queue.enter(subway.getNext(), now, nowline, ed, i,s);
            }
            if(!subway.getPre().equals("空")) {
                queue.enter(subway.getPre(), now, nowline, ed, i,s);
            }
            Subway sw[]=getOthers(name,nowline);
            nowline = sw[0].getLinename();
            now+="换"+nowline;
            while (sum[i]!=0){
                i++;
            }
            if(!sw[0].getNext().equals("空")){
                queue.enter(sw[0].getNext(),now,nowline,ed,i,s);
            }
            if(!sw[0].getPre().equals("空")){
                queue.enter(sw[0].getPre(),now,nowline,ed,i,s);
            }
            nowline = sw[1].getLinename();
            now+="换"+nowline;
            while (sum[i]!=0){
                i++;
            }
            if(!sw[1].getNext().equals("空")){
                queue.enter(sw[1].getNext(),now,nowline,ed,i,s);
            }
            if(!sw[1].getPre().equals("空")){
                queue.enter(sw[1].getPre(),now,nowline,ed,i,s);
            }
        }
        else {
            if(!subway.getNext().equals("空")){
                  queue.enter(subway.getNext(),now,nowline,ed,i,s);
              }
            if(!subway.getPre().equals("空")) {
                queue.enter(subway.getPre(), now, nowline, ed, i,s);
            }
            if(subway.getTransfer().equals("1")){
                subway = getOther(nowline,name);
                nowline = subway.getLinename();
                now+="("+"换"+nowline+")";
                while (sum[i]!=0){
                    i++;
                }
                if(!subway.getNext().equals("空")){
                    queue.enter(subway.getNext(),now,nowline,ed,i,s);
                }
                if(!subway.getPre().equals("空")) {
                    queue.enter(subway.getPre(), now, nowline, ed, i,s);
                }
            }
        }
        while (!queue.isNull()){
            Qnode qnode =new Qnode();
            qnode=queue.delete();
            loops(qnode.getName(),qnode.getNow(),qnode.getNowline(),qnode.getEd(),qnode.getI(),qnode.getS());
        }
    }

  

标签:nowline,ed,equals,queue,subway,3.31,now
From: https://www.cnblogs.com/chukjbgg333/p/18106954

相关文章

  • 3.31 联考
    3.31补题A\(5pts\)\(n=2\)时,\(\fracn2=1\),即为nim游戏。\(30pts\)对于\((a_1,a_2,a_3,a_4,a_5,a_6)\)这样的六元组,至多有\(10^6\)个。记忆化搜索他们的SG值即可。可能需要若干剪枝,因为复杂度其实是\(10^6\times6^3\)的。\(100pts\)首先观察样例2,合理猜测......
  • 3.25-3.31
    天梯赛2:7-12这是二叉搜索树吗?在满足题意的前提下从前后分别往中间走模拟二叉树的建立即可。///l、//(゚、。7//l、~ヽ//じしf_,)ノ//不要放弃!猫猫会为你加油!#include<bits/stdc++.h>#defineendl'\n'#defineintlonglongusingnamespacestd;constint......
  • SMU Winter 2024 div2 ptlks的周报Week 7(3.25-3.31)
    哈夫曼编码对出现频率大的字符赋予较短的编码,对出现频率小的字符赋予较长的编码。哈夫曼树的建树过程为,每次选取最小和次小的根节点,将它们之和作为它们的根节点,左子节点为小点,右子节点为次小点,直至仅剩一棵树。一棵哈夫曼树,左子树为0,右子树为1,以根节点到叶子结点的路径作为每个叶......
  • 3.25-3.31周报
    天梯赛27-10红色警报这道题的题意要注意是删去一个城市后增加了多少个区域,而不是有多少个城市变成了单独的点,赛时理解错了题意,用set做会有点有问题。其实很简单,就是bfs搜一下有多少个联通块,每次删除把被删的点打个标记,每次联通块的个数和上一次的比较一下,只要增加就是改变了连......
  • 2023.31 框架与架构
    框架(Framework)是指一个软件系统或应用的基本结构和组织方式。它提供了一个开发者可以构建应用程序的基础,包括预定义的组件、库、API和工具集。框架通常具有一套规范和约定,旨在帮助开发者更高效地编写代码,并提供共享的开发模式和最佳实践。框架通常具有一定的抽象程度,可以隐藏底层......
  • KubeSphere 社区双周报 | OpenFunction 支持 Dapr 状态管理 | 2023.03.31-04.13
    KubeSphere社区双周报主要整理展示新增的贡献者名单和证书、新增的讲师证书以及两周内提交过commit的贡献者,并对近期重要的PR进行解析,同时还包含了线上/线下活动和布道推广等一系列社区动态。本次双周报涵盖时间为:2023.03.31-2023.04.13。贡献者名单新晋KubeSphereCon......
  • 2023.3.31 还没出门,感觉阴天;出门了,不阴不晴
    哇哈哈哈哈哈哈中奖啦!有生之年终于轮到我中奖啦哈哈哈哈薅万代的羊毛真是爽死啦果冻包是啥我猜猜是透明的那种挎包应该下午去校医院研究生体检,啊啊啊疼死了,抽血疼死了(其实也没有那么疼,但是旁边有人哄的话就好容易哭哭噢/(ㄒoㄒ)/~~)体检完居然有快两小时了去买了杨枝甘露......
  • day31(2023.3.31)
    1.TCP双向通信(创建服务端)2.TCP双向通信(创建客户端) 运行结果: 3.点对点聊天应用(创建服务端)4.点对点聊天应用(创建客户端) 运行结果:  5.点对点应用聊天优化(服务端和客户端一起) 运行结果:  3月底了,一个月过去了,继续加油,冲冲冲!day31(2023......
  • 3.31学习总结
    <%@pagelanguage="java"contentType="text/html;charset=UTF-8"pageEncoding="UTF-8"%><%@pageimport="java.io.*,java.util.*"%><!DOCTYPEhtml><html><head><metacharset="utf-......
  • 2023.3.31团队开发
    今天思考了大致的方向:首先创建web端的服务,即用户可以实现二维码的扫码,选择自己在车上需要的产品然后将数据更新在数据库中。最后使用Android端;也就是在司机的手机上查看商品的购买情况购买情况通过大数据分析,预测等......