精华内容
下载资源
问答
  • 无分隔符字典问题

    2017-12-25 18:00:06
    无分隔符字典 算法设计题第四章 源码 已经运行证明
  • 问题描述 设∑=(α1,α2,…,αn)是 n 个互不相同的符号...无分隔符字典问题要求对给定的 n, ∑以及正整数 k,编程计算 Lk 的最大无分隔符字典。 设计一个算法,对于给定的正整数 n 和 k,编程计算 Lk的最大无分隔符字典

    问题描述

    设∑=(α1,α2,…,αn)是 n 个互不相同的符号组成的符号集。
    Lk={β1β2…βk|βi∈∑,1≤i≤k}是∑中字符组成的长度为k的全体字符串。 S⊆Lk是Lk的1个无分隔符字典是指对任意a1a2…ak∈Sa1a2…ak∈S和b1…bk∈S则
    {a2a3…akb1,a3a4…b1b2,…,akb1b2…bk−1}⋂S=∅
    无分隔符字典问题要求对给定的 n, ∑以及正整数 k,编程计算 Lk 的最大无分隔符字典。

    设计一个算法,对于给定的正整数 n 和 k,编程计算 Lk的最大无分隔符字典。

    数据输入:
    第一行有 2 个正整数 n 和 k。

    代码展示

    package algorithm;
    
    import java.util.*;
    
    public class WuFenGeFuZiDian {
    
        private static int n, k;
        private static int[] ak;
        private static int lk;
        private static int[] x;
        private static int best;
    
        private static int MAX = 10000;
        private static Set<Integer> S;
        private static Set<Integer> res;
    
        public static void main(String[] args) {
            Scanner input = new Scanner(System.in);
    
            while (true) {
                best = 0;
    
                n = input.nextInt();
                k = input.nextInt();
    
                S = new HashSet<>(MAX);
                res = new HashSet<>(MAX);
                ak = new int[2*k];
                x = new int[n+1];
                lk = n;
    
                for (int i=1; i<=n; i++)
                    x[i] = i;
    
                for (int i=1; i<k; i++)
                    lk *= n;
                lk--;
    
                search(0);
    
                System.out.println("当前最大无分隔符字典元素数量为:");
    
                System.out.println(best);
                System.out.println("最大字典集合:"+res);
            }
        }
        
        //ii是a1a2...akb1b2...bk-1的bi的下标。i-1是bi为结尾的字符串开始的位置。
        private static int digi(int i) {
            int ii = k+i-2;
            int x = ak[i-1];
            for (int j=0; j<k-1; j++) {
                x *= n;
                x += ak[i];
                i++;
            }
            return x;
        }
    
        //判断字符串a和b是否互不为前缀
        private static boolean pref(int a, int b) {
            int x = a;
            int y = b/n;
            for (int i=0; i<k-1; i++){
                ak[k-i-2] = x%n;
                x /= n;
                ak[2*k-i-3] = y%n;
                y /= n;
            }
            for (int i=1; i<k; i++)
                if (S.contains(digi(i)))
                    return true;
    
            x = b;
            y = a/n;
            for (int i=0; i<k-1; i++) {
                ak[k-i-2] = x%n;
                x /= n;
                ak[2*k-i-3] = y%n;
                y /= n;
            }
            for (int i=1; i<k; i++)
                if (S.contains(digi(i)))
                    return true;
    
            return false;
        }
    
        private static boolean oka(int b) {
            S.add(b);
            for (Integer a : S) {
                if (a != b && pref(a, b)) {
                    S.remove(b);
                    return false;
                }
            }
    
            return true;
        }
    
        //逐步加深的回溯法
        private static void search(int dep) {
            if (dep > lk) {
                if (S.size() > best) {
                    best = S.size();
                    res.clear();
                    res.addAll(S);
                }
                return;
            }
            if (oka(dep)) {
                S.add(dep);
                search(dep + 1);
                S.remove(dep);
            }
            search(dep + 1);
        }
    }
    
    展开全文
  • 无分隔符字典问题要求对给定的n和S以及正整数k,计算Lk的最大无分隔符字典。 输入: 有多组测试数据,每组一行,其上有2个正整数n和k,n£50,k£10。 输出: 输出每组的Lk的最大无分隔符字典的元素个数。
  • 5-5 无分隔符字典问题 问题描述 设∑=(α1,α2,...,αn)∑=(α1,α2,...,αn)\sum=(\alpha_1,\alpha_2,...,\alpha_n)是 n 个互不相同的符号组成的符号集。 Lk={β1β2...βk|βi∈∑,1≤i≤k}Lk={β1β2...βk|...

    5-5 无分隔符字典问题


    问题描述

    =(α1,α2,...,αn) ∑ = ( α 1 , α 2 , . . . , α n ) 是 n 个互不相同的符号组成的符号集。
    Lk={β1β2...βk|βi,1ik} L k = { β 1 β 2 . . . β k | β i ∈ ∑ , 1 ≤ i ≤ k } 中字符组成的长度为k的全体字符串。 SLk S ⊆ L k Lk L k 的1个无分隔符字典是指对任意 a1a2...akS a 1 a 2 . . . a k ∈ S b1b2...bkS b 1 b 2 . . . b k ∈ S ,则

    {a2a3...akb1,a3a4...b1b2,...,akb1b2...bk1}S= { a 2 a 3 . . . a k b 1 , a 3 a 4 . . . b 1 b 2 , . . . , a k b 1 b 2 . . . b k − 1 } ⋂ S = ∅

    无分隔符字典问题要求对给定的 n, 以及正整数 k,编程计算 Lk L k 的最大无分隔符字典。

    设计一个算法,对于给定的正整数 n 和 k,编程计算 Lk L k 的最大无分隔符字典。

    数据输入:
    第一行有 2 个正整数 n 和 k。


    Java

    package Chapter5HuiSuFa;
    
    import java.util.*;
    
    public class WuFenGeFuZiDian {
    
        private static int n, k;
        private static int[] ak;
        private static int lk;
        private static int[] x;
        private static int best;
    
        private static int MAX = 10000;
        private static Set<Integer> S;
    
        public static void main(String[] args) {
            Scanner input = new Scanner(System.in);
    
            while (true) {
                best = 0;
    
                n = input.nextInt();
                k = input.nextInt();
    
                S = new HashSet<>(MAX);
                ak = new int[2*k];
                x = new int[n+1];
                lk = n;
    
                for (int i=1; i<=n; i++)
                    x[i] = i;
    
                for (int i=1; i<k; i++)
                    lk *= n;
                lk--;
    
                if(k < 3) {
                    System.out.println(n);
                    continue;
                }
    
                search(0);
    
                System.out.println(best);
            }
        }
    
        //将相应字符串转换为n进制数
        private static int digi(int i) {
            int ii = k+i-2;
            int x = ak[ii--];
            for (int j=0; j<k-1; j++) {
                x *= n;
                x += ak[ii];
                ii--;
            }
            return x;
        }
    
        //判断字符串a和b是否互不为前缀
        private static boolean pref(int a, int b) {
            int x = a;
            int y = b/n;
            for (int i=0; i<k-1; i++){
                ak[k-i-2] = x%n;
                x /= n;
                ak[2*k-i-3] = y%n;
                y /= n;
            }
            for (int i=1; i<k; i++)
                if (S.contains(digi(i)))
                    return true;
    
            x = b;
            y = a/n;
            for (int i=0; i<k-1; i++) {
                ak[k-i-2] = x%n;
                x /= n;
                ak[2*k-i-3] = y%n;
                y /= n;
            }
            for (int i=1; i<k; i++)
                if (S.contains(digi(i)))
                    return true;
    
            return false;
        }
    
        //判断当前字符串b是否可以加入字典
        //将字符串a1a2..ak看作k位n进制数
        private static boolean oka(int b) {
            Iterator<Integer> it = S.iterator();
            while (it.hasNext()) {
                int a = it.next();
                if (pref(a, b))
                    return false;
            }
    
            return true;
        }
    
        //逐步加深的回溯法
        private static void search(int dep) {
            if (dep > lk) {
                if (S.size() > best)
                    best = S.size();
                return;
            }
            if (oka(dep)) {
                S.add(dep);
                search(dep + 1);
                S.remove(dep);
            }
            search(dep + 1);
        }
    }

    Input & Output

    2 2
    2
    
    16 2
    16

    Reference

    王晓东《计算机算法设计与分析》(第3版)P181

    展开全文
  • 首先我们来列举一下 pandas...pd.read_table(filepath):从限定分隔符的文本文件导入数据 pd.read_excel(filepath):从 Excel 文件导入数据 pd.read_sql(query, connection_object):从 SQL 表 / 库导入数据 pd.r...

    关于这篇博文提到的所有函数都可以在 IO Tools (Text, CSV, HDF5, …) 找到。

    首先我们来列举一下 pandas 处理文件的函数1

    • pd.read_csv(filepath):从 CSV 文件导入数据
    • pd.read_table(filepath):从限定分隔符的文本文件导入数据
    • pd.read_excel(filepath):从 Excel 文件导入数据
    • pd.read_sql(query, connection_object):从 SQL 表 / 库导入数据
    • pd.read_json(json_string):从 JSON 格式的字符串导入数据
    • pd.read_html(url):解析 URL、字符串或者 HTML 文件,抽取其中的 tables 表格
    • pd.read_clipboard():从你的粘贴板获取内容,并传给 read_table()
    • pd.DataFrame(dict):从字典对象导入数据,Key 是列名,Value 是数据

    想要读取具有明显分隔符的数据,我们可以采用的函数是:

    与此问有关的相关参数有三个:sep, delimiter, delim_whitespace,具体含义以 pandas.read_table 为例,翻译出处 英文原文

    sep : str, defaults to ‘,’ for read_csv(), \t for read_table()
    分隔符使用。如果sep为None,将尝试自动确定这一点。长度大于1个字符且与’\s+‘不同的分隔符将被解释为正则表达式,将强制使用Python解析引擎,并忽略数据中的引号。正则表达式示例:’\r\t’。

    delimiter: str,默认None
    sep的备用参数名称。

    delim_whitespace: boolean,default False

    指定是否使用空格(例如’ ‘或’\t’)作为分隔符。相当于设置sep=’\s+’。如果此选项设置为True,则不应为delimiter参数传入任何内容。

    版本0.18.1中的新功能:支持Python解析器。

    我们想要读取什么分隔符特征的数据主要就靠指定上述三个参数。其中 delim_whitespace 只在以空格为分隔符的数据中有用。

    下面我们就来简单介绍利用这两个函数怎么读取一些具有常见分隔符的数据。

    读取以空格为分割符的数据

    在这里插入图片描述
    如图,上面有一个以空格为分隔符的文件

    pd.read_csv

    >>> dataframe = pd.read_csv(r"C:\Users\Administrator\Desktop\data.txt", header=None, sep=' ')
    >>> dataframe
            0      1      2      3      4      5      6      7
    0   46.19  99.74  29.00  86.38  52.35  29.89  99.07  83.01
    1   24.16  99.99  27.88  43.85  40.05  28.84  99.89  82.92
    ... 为了减少所占空间,省略了一些
    13  97.58  99.43  28.53  81.55  80.44  27.40  84.57  82.59
    14  95.23  97.37  28.19  63.28  86.51  26.90  73.27  82.08
    

    pd.read_table

    >>> dataframe = pd.read_table(r"C:\Users\Administrator\Desktop\data.txt", header=None, delim_whitespace=True)
    >>> dataframe
            0      1      2      3      4      5      6      7
    0   46.19  99.74  29.00  86.38  52.35  29.89  99.07  83.01
    1   24.16  99.99  27.88  43.85  40.05  28.84  99.89  82.92
    ...
    13  97.58  99.43  28.53  81.55  80.44  27.40  84.57  82.59
    14  95.23  97.37  28.19  63.28  86.51  26.90  73.27  82.08
    

    读取以逗号为分隔符的数据

    在这里插入图片描述

    pd.read_csv

    >>> dataframe = pd.read_csv(r"C:\Users\Administrator\Desktop\data.txt", header=None) # 默认就是以 , 为分隔符。
    >>> dataframe
            0      1      2      3      4      5      6      7
    0   46.19  99.74  29.00  86.38  52.35  29.89  99.07  83.01
    1   24.16  99.99  27.88  43.85  40.05  28.84  99.89  82.92
    ...
    13  97.58  99.43  28.53  81.55  80.44  27.40  84.57  82.59
    14  95.23  97.37  28.19  63.28  86.51  26.90  73.27  82.08
    

    pd.read_table

    >>> dataframe = pd.read_table(r"C:\Users\Administrator\Desktop\data.txt", header=None, delimiter=',')
    >>> dataframe
            0      1      2      3      4      5      6      7
    0   46.19  99.74  29.00  86.38  52.35  29.89  99.07  83.01
    1   24.16  99.99  27.88  43.85  40.05  28.84  99.89  82.92
    ...
    13  97.58  99.43  28.53  81.55  80.44  27.40  84.57  82.59
    14  95.23  97.37  28.19  63.28  86.51  26.90  73.27  82.08
    

    常见错误

    OSError: Initializing from file failed

    出现这个错误的原因很可能是你的路径名中带有中文

    解决方案有两种2

    1. 在 read_csv 之前先用 open 函数
    f = open('人效日报-20180701.csv')
    data = pd.read_csv(f, skiprows=1, header=None)
    
    1. 不加 open 函数,在 read_csv 里面设置 engine 参数
    data = pd.read_csv('人效日报-20180701.csv', skiprows=1, header=None, engine='python')
    

    后话

    我们同样也有一系列以 to_ 开头函数来将 DataFrame 对象写入文件中。如果你写入的时候不想将 header 和 index 写入文件中,可以指定对应参数为 None


    1. https://zhuanlan.zhihu.com/p/25630700 ↩︎

    2. https://blog.csdn.net/qq_32618817/article/details/81361009 ↩︎

    展开全文
  • 将string字符串转换为array数组  NSArray *array = [str componentsSeparatedByString:@","]...--分隔符 将array数组转换为string字符串  NSString *str = [array componentsJoinedByString:@","];--分隔符

    将string字符串转换为array数组

     NSArray  *array = [str componentsSeparatedByString:@","];--分隔符


    将array数组转换为string字符串

     NSString *str = [array componentsJoinedByString:@","];--分隔符

    展开全文
  •  此种路径在windows系统没什么不对,但是到了linux系统会出现问题,在linux系统会生成名为“path\”的一个文件夹,当你再需要对创建的文件操作时,就会找不到文件。    解决时可以在路径
  • 可以为空seq:要连接的元素序列、字符串、元组、字典上面的语法即:以sep作为分隔符,将seq所有的元素合并成一个新的字符串返回值:返回一个以分隔符sep连接各个元素后生成的字符串L = [1,2,3,4,5 ,6] print(L) s1 =...
  • SELECT * FROM [DB_SCJC].[dbo].[tn_Manager] where CHARINDEX(',31,',','+...CHARINDEX({1},{2})中,{1}是要查找的字符,{2}是字典库。返回值为{1}在{2}中的位置。 转载于:https://www.cnblogs.com/axu92312...
  • 获取字符串内的分隔段 */ CREATE FUNCTION [dbo].[GETSPLITCHAR](@STR NVARCHAR(4000),@SPLITCHAR NVARCHAR(1),@SPLITLENGTH INT) RETURNS NVARCHAR(50) AS BEGIN DECLARE @RETURNSTR NVARCHAR(50) DECLAR...
  • SQL中查询分隔符字段

    2014-02-08 14:54:00
    做项目,有时为了偷懒,通常将集合值存到一个字段中(未进行关系表拆分),现在需求是需要查询权限编号(RoleID)等于2的用户列表,查询前的数据如下图: 如果用like是不行的,这里可以用charindex方法,具体查询...
  • 零基础学python-11.4 语句分隔符

    千次阅读 2015-09-06 22:32:31
    1.如果使用语法括号对,语句就可以横跨数行 列表: >>> a=[1,2,3] >>> b=[1, 2, 3,] >>> a [1, 2, 3] ...字典 >>> c={'a':1,'b':2,'c':3} >>> d={'a':1, 'b':2, 'c':3} >>> c {'a':
  • 该库接收一系列输入,并尝试返回带有三位数字和十进制字符分隔符字典 用法 推断日期时间 >> > from hieroskopia import InferDatetime >> > InferDatetime . infer ( pd . Series ([ "2019-11-27" , "2019/11/28...
  • Map、Reduce本身就是一个对数据字典遍历的过程。 而Mapreduce在开始,将输入文件,根据回车分成一个个value,在Map到Reduce中途做了一件将写入Context中Key值相同的项的value合并起来。这些都是一些自动完成的...
  • 函数:string.join() ...将字符串、元组、列表中的元素以指定的字符(分隔符)连接生成一个新的字符串  os.path.join(): 将多个路径组合后返回 一、函数说明 1、join()函数 语法: 'sep'.join(seq
  • 《Programming Perl》开头的那些关于什么是happiness定义看来所言非虚,所以你只要需要将$/定义为fastq格式的分隔符就ok了。 但是,如果是Python呢?(容易钻牛角尖的孩纸,又或者是不喜欢花括号的孩子…..反正...
  • 输入描述:输入为3列,每列以“ ”分隔, 第一列表示key_value_pairs_delimiter, 第二列表示key_value_delimiter, 第三列表示待切分的字符串。 输出描述: 第一行:输出有效的key-value个数 第二行:依次输出key-...
  • 借助上一篇文章正则表达式快速入门,来完成了这个转换过程。 需求如下:将一串字符转换为标准的分隔符字符串如:",,,,a,svv,ss,,v,,v,,,"转换后:"a,svv,ss,v,v" 实现方法如下: /// /// 格式化一组如:",,
  • 11111 将这行数据存为字符串,然后调用字符串分割函数split将其分割成字符数组String [] strRating,在定义一个整型数组,将字符数组转换成整数数... System.out.println("请输入分数,以英文逗号分隔,:"); Scanner
  • java字典源码字词分隔符 Java源代码和字典,可用于将复合词分隔为子词。 编译并使用字典作为参数运行Seperator。 字典必须以行分隔,并且理想情况下不应包含任何复合词。 复杂度估算 空间复杂度 数据结构 字典被存储...
  • python学习字典

    2013-01-08 11:24:32
    #-*- encoding: utf-8 -*- ''' Created on 2013-1-7 ...#字典的元素以逗号为分隔符,每个元素包含键和键值,他俩用冒号分隔 diction1 = {1:"tieto",2:"nsn"} print diction1 #创建空字典,再添加元素 dict
  • VBA字典(详解,示例)

    万次阅读 多人点赞 2019-05-03 17:14:36
    字典主要作用:条件计数、条件求和、去重、匹配。 本篇主要介绍了VBA字典以上使用方法及注意事项。
  • 【需求描述】 例如下面表格为“值班表.xlsx” date ...默认是以逗号作为分隔符。 (2)把第一列的日期作为关键字,构建空字典。例如,dic = {'20200617': {}, '20200618':{}}。 (3)关键字对应的
  • 用于修改的CC-CEDICT格式的解析器(使用|作为定义的分隔符,而不是/ )。 (请注意,可以通过以下方式对CC-CEDICT文件进行预处理:将所有的“ /”(用空格包围)替换为“ /”(不用空格包围),并将所有其他的“ /”...
  • 比较方便记忆查询,比如我们查新华字典,要查“獒”这个词的意思,就要把獒作为关键词“key”去进行检索,找到他的意思,pythonn中把意思作为值(value)用冒号作为分隔符放在其对应的key的后面。 在引用的时候,...
  • 字符串,字典

    2019-12-25 16:24:35
    字符串常见操作 ①去除左右两边空格 语法: string.strip(去除两边空格) string.lstrip(去除左边空格) string.rstrip(去除右边空格) ...string.split(“分隔符”,分割次数)按指定分割符分割,分割指定...
  • 列表 列表用[]表示,间隔符为...元素之间的分隔符为**,,键-值之间的分隔符为:** 列表与元组的区别 列表可以进行修改、添加、删除元素等操作。 即:列表的值是可变的 元组的值不可以改变。 不可变的列表被成为元组 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 46,822
精华内容 18,728
关键字:

无分隔符字典问题