• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >编程问答 > java算法

java算法

作者:佚名 字体:[增加 减小] 来源:互联网 时间:2017-06-07

佚名通过本文主要向大家介绍了java算法大全,java算法与数据结构,java经典算法,java递归算法,java算法有哪些等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题:java算法
描述:

题目如下:
The number of different path from C to C with duration of less than 30. In the sample data, the paths are: CDC, CEBC, CEBCDC, CDCEBC, CDEBC, CEBCEBC, CEBCEBCEBC.

Graph: AB5, BC4, CD8, DC8, DE6, AD5, CE2, EB3, AE7

题目意思大致是求出 C to C 在 长度在不超过30范围内共有过少条路径?


解决方案1:

题目没有给出数据范围,如果数据比较小的话,在每个点上挂一张表,表示从C到该点有哪些路径长度可行,然后从C开始做一遍BFS即可,最后统计C点上表的大小即可。如果数据比较大可以考虑Tarjan缩环啥的……

解决方案2:

BSF:

private static class Pair{
    char c;
    int duration;

    public Pair(char c, int duration) {
        this.c = c;
        this.duration = duration;
    }
}

public int search(String[] input){
    Map<Character, Set<Pair>> map = new HashMap<>();
    for(String s: input){
        char c1 = s.charAt(0), c2 = s.charAt(1);
        int duration = s.charAt(2) - '0';
        if(!map.containsKey(c1))
            map.put(c1, new HashSet<>());
        map.get(c1).add(new Pair(c2, duration));
    }

    int count = 0;
    Queue<Pair> q = new LinkedList<Pair>();
    q.offer(new Pair('C', 0));
    while(!q.isEmpty()){
        int size = q.size();
        while(size-- > 0){
            Pair cur = q.poll();
            for(Pair p: map.get(cur.c)){
                if(cur.duration + p.duration >= 30)
                    continue;
                if(p.c == 'C')
                    count++;
                q.offer(new Pair(p.c, cur.duration + p.duration));
            }
        }
    }
    return count;
}

@Test
public void test(){
    assertEquals(7, search(new String[]{"AB5", "BC4", "CD8", "DC8", "DE6", 
            "AD5", "CE2", "EB3", "AE7"}));
}


分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • Java算法请教一个java概率算法
  • java算法
  • java算法,问题如下?

相关文章

  • 2017-06-07 为什么我在配置Myeclipse时,出现这样的问题
  • 2017-06-07 python核心编程学习python网络编程怎么入门
  • 2017-06-07 七牛回调的callbackUrl可以是ip地址吗
  • 2017-06-07 使用laravel开发微信服务平台出现无法提供服务的问题。
  • 2017-06-07 (python)有没有提供用经度纬度查询天气的服务?
  • 2017-06-07 vue怎么在vue里面引用七牛的接口并调用
  • 2017-06-07 golang,如何判断一个链接5分钟内无任何消息
  • 2017-06-07 排队组合优化的求解
  • 2017-06-07 laravel52验证登录超时的中间件redirect后session丢失了?
  • 2017-06-07 NokiaS60SDK的多个版本安装问题

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 路径中引入变量的问题
    • 使用wordpress七牛插件后,七牛二级域名能够访问到网站首页
    • (python)数据库新增记录如何在管理界面展现
    • http从mongodb下载二进制文件
    • python爬虫(python)APP后台的技术栈?
    • 上传云文件到微信临时服务器
    • python相对导入的两个句点代表什么意思?
    • MacOSX上如何获取系统当前的详细信息
    • PythonDjangoxadmin可以对数据进行简单的逻辑处理嘛?
    • 两行python代码,打印字符串,找不出bug所在,大神指教

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有