コード例 #1
0
  private static void identifyRoutes(int routekey, int junction) {
    for (Road road : roaddetails) {
      if (junction == junctions) return;

      Route validRoute = null;
      if (road.startjunction == junction) {

        validRoute = validRoutes.get(routekey);
        if (validRoute == null || validRoute.isComplete) {
          validRoute = new Route(new HashSet<Road>());
          routekey = road.roadidx;
          validRoute.routekey = routekey;
          validRoutes.put(routekey, validRoute);
          if (junction != 1) backTraceRouteAndComplete(routekey, road);
        }
        if (validRoute.isComplete) return;

        if (!validRoute.roads.contains(road)) {
          validRoute.roads.add(road);
          validRoute.totalcost += road.cost;
          road.routes.add(validRoute);
        } else continue;

        if (road.destjunction == junctions) validRoute.isComplete = true;

        identifyRoutes(routekey, road.destjunction);

        // if (junction!=1)
        // backTraceRouteAndComplete(routekey,junction);
      }
    }
  }