精华内容
下载资源
问答
  • 34算法及其实现 (一)算法算法的表示 在小品钟点工中,宋丹丹讲了这样一个笑话:说要 把大象装冰箱,一共分几步? 第一步先把冰箱门打开 第二步把大象放进去 第三步把冰箱门... 2算法常用的表示方法有哪些? 3.算法的流程
  • 《图的表示方法》 (i)邻接矩阵表示法,如图:  也就是说,如果两节点之间一条弧,则邻接矩阵中对应元素为1;否则为0。可以看出,这种表示法非常简单、直接。但是,在邻接矩阵所有 个元素中,只有 个为...

    《图的表示方法》

    (i)邻接矩阵表示法,如图:

     

      也就是说,如果两节点之间有一条弧,则邻接矩阵中对应的元素为1;否则为0。可以看出,这种表示法非常简单、直接。但是,在邻接矩阵的所有 个元素中,只有 个为非零元。如果网络比较稀疏,这种表示法浪费大量的存储空间,从而增加了在网络中查找弧的时间。

      同样,对于网络中的权,也可以用类似邻接矩阵的 矩阵表示。只是此时一条弧所对应的元素不再是1,而是相应的权而已。如果网络中每条弧赋有多种权,则可以用多个矩阵表示这些权。

    (ii)关联矩阵表示法

      也就是说,在关联矩阵中,每行对应于图的一个节点,每列对应于图的一条弧。如果一个节点是一条弧的起点,则关联矩阵中对应的元素为1;如果一个节点是一条弧的终点,则关联矩阵中对应的元素为 -1;如果一个节点与一条弧不关联,则关联矩阵中对应的元素为0。对于简单图,关联矩阵每列只含有两个非零元(一个 1,一个-1)可以看出,这种表示法也非常简单、直接。但是,在关联矩阵的所有mn 个元素中,只有 2m个为非零元。如果网络比较稀疏,这种表示法也会浪费大量的存储空间。但由于关联矩阵有许多特别重要的理论性质,因此它在网络优化中是非常重要的概念。

      同样,对于网络中的权,也可以通过对关联矩阵的扩展来表示。例如,如果网络中每条弧有一个权,我们可以把关联矩阵增加一行,把每一条弧所对应的权存储在增加的行中。如果网络中每条弧赋有多个权,我们可以把关联矩阵增加相应的行数,把每一条弧所对应的权存储在增加的行中。

    (iii)弧表示法

    例如,例7所示的图,假设弧(1,2),(1,3),(2,4),(3,2),(4,3),(4,5),(5,3)和(5,4)上的权分别为8,9,6,4,0,3,6和7,则弧表表示如上:

    为了便于检索,一般按照起点、终点的字典序顺序存储弧表,如上面的弧表就是按照这样的顺序存储的。

    (iv)邻接表表示法

      邻接表表示法将图以邻接表(adjacency  lists)的形式存储在计算机中。所谓图的邻接表,也就是图的所有节点的邻接表的集合;而对每个节点,它的邻接表就是它的所有出弧。邻接表表示法就是对图的每个节点,用一个单向链表列出从该节点出发的所有弧,链表中每个单元对应于一条出弧。为了记录弧上的权,链表中每个单元除列出弧的另一个端点外,还可以包含弧上的权等作为数据域。图的整个邻接表可以用一个指针数组表示。例如,例7所示的图,邻接表表示为

    (v)星形表示法

    星形(star)表示法的思想与邻接表表示法的思想有一定的相似之处。对每个节点,它也是记录从该节点出发的所有弧,但它不是采用单向链表而是采用一个单一的数组表示。也就是说,在该数组中首先存放从节点1出发的所有弧,然后接着存放从节点2出发的所有孤,依此类推,最后存放从节点 出发的所有孤。对每条弧,要依次存放其起点、终点、权的数值等有关信息。这实际上相当于对所有弧给出了一个顺序和编号,只是从同一节点出发的弧的顺序可以任意排列。此外,为了能够快速检索从每个节点出发的所有弧,我们一般还用一个数组记录每个节点出发的弧的起始地址(即弧的编号)。在这种表示法中,可以快速检索从每个节点出发的所有弧,这种星形表示法称为前向星形(forward star)表示法。

    例如,在例7所示的图中,仍然假设弧(1,2),(l,3),(2,4),(3,2),(4,3),(4,5),(5,3)和(5,4)上的权分别为8,9,6,4,0,3,6和7。此时该网络图可以用前向星形表示法表示如下:

    《星形表示法详解及其转化算法》

    注意:上面的第一张表实际上有个错误,仔细看的童鞋应该能发现,起始地址point(i) : 1 , 3 , 4 , 5 , 7 , 9 ,那个6应该是5

    通常情况下会设置一个st[i] 数组,和STL类似, [st[i],st[i+1]) 恰好为以结点i开头的边下标。对应于上个例子的第一张表,则该数组为:

    st[6]={1,3,4,5,7,9};

    还会有一个数组对应于第二张表,主要使用第三行数据,

    v[8]={2,3,4,2,3,5,3,4};

    下面的程序把树的前向星表示转化成左儿子-右兄弟表示,以方便后续算法实现。

    void star2lsrs ()
     {
         memset (son , 0 , sizeof (son )); /*清零, 为零代表链表为空son */
         for(i = 1; i <= n; i ++)
         /*按逆序考虑各个结点,则最后的链表是顺序的*/
         for(j = st[i +1] -1; j >= st[i ]; j --)
             {
                 bro[j ] = son[i];
                 son[i ] = v[j ]; /*插到链表首部*/
             }
    }

    图最常用的表示法是邻接矩阵和邻接表。对于静态图(建图完毕后不再修改图的结构)往往用前向星来代替邻接表,节省空间和时间。

    邻接矩阵不管输入格式如何,总是很容易得到邻接矩阵,只需要注意平行边的情况。
    前向星邻接矩阵本身就包含了顶点序,因此很容易转化为前向星:

    把邻接矩阵转换为前向星表示法:

    void matrix2star ()
     {
         /*上一条的第一端点初始化为(表示未出现),边数初始化为u0m0 */
         u = m = 0;
         for(i = 1; i <= n; i ++)
         for(j = 1; j <= n; j ++)
             {
                 if(a[i][j])
                 {
                     v[++m ] = j;
                     while (u < i)
                     st [++u ] = m;
                 }
             }
     }
      /*
     在程序中,u代表上一条边的第一个顶点编号,当u < i时代表这条边的第一端点还
     没有出现过,设置st[u + 1] : : : st[i]为m。
      */

    把边列表转化成前向星的方法类似,只需要把第一顶点相同的结点串成链表,用计数器法进行结点编号分配,和前向星转化成左儿子-右兄弟一样每次插入到链表首部,在O(m)时间内可以建立前向星表示。当然,也可以按第一顶点为关键字直接进行快速排序,不过速度稍微慢一些

     

    链接:https://www.cnblogs.com/liushang0419/archive/2011/05/06/2039386.html

    展开全文
  • 《图的表示方法》 (i)邻接矩阵表示法,如图:  也就是说,如果两节点之间一条弧,则邻接矩阵中对应元素为1;否则为0。可以看出,这种表示法非常简单、直接。但是,在邻接矩阵所有 个元素中,只有 ...

    《图的表示方法》

    (i)邻接矩阵表示法

    如图:

     

      也就是说,如果两节点之间有一条弧,则邻接矩阵中对应的元素为1;否则为0。可以看出,这种表示法非常简单、直接。但是,在邻接矩阵的所有 个元素中,只有 个为非零元。如果网络比较稀疏,这种表示法浪费大量的存储空间,从而增加了在网络中查找弧的时间。

      同样,对于网络中的权,也可以用类似邻接矩阵的 矩阵表示。只是此时一条弧所对应的元素不再是1,而是相应的权而已。如果网络中每条弧赋有多种权,则可以用多个矩阵表示这些权。

    (ii)关联矩阵表示法

      也就是说,在关联矩阵中,每行对应于图的一个节点,每列对应于图的一条弧。如果一个节点是一条弧的起点,则关联矩阵中对应的元素为1;如果一个节点是一条弧的终点,则关联矩阵中对应的元素为 -1;如果一个节点与一条弧不关联,则关联矩阵中对应的元素为0。对于简单图,关联矩阵每列只含有两个非零元(一个 1,一个-1)可以看出,这种表示法也非常简单、直接。但是,在关联矩阵的所有mn 个元素中,只有 2m个为非零元。如果网络比较稀疏,这种表示法也会浪费大量的存储空间。但由于关联矩阵有许多特别重要的理论性质,因此它在网络优化中是非常重要的概念。

      同样,对于网络中的权,也可以通过对关联矩阵的扩展来表示。例如,如果网络中每条弧有一个权,我们可以把关联矩阵增加一行,把每一条弧所对应的权存储在增加的行中。如果网络中每条弧赋有多个权,我们可以把关联矩阵增加相应的行数,把每一条弧所对应的权存储在增加的行中。

    (iii)弧表示法

    例如,例7所示的图,假设弧(1,2),(1,3),(2,4),(3,2),(4,3),(4,5),(5,3)和(5,4)上的权分别为8,9,6,4,0,3,6和7,则弧表表示如上:

    为了便于检索,一般按照起点、终点的字典序顺序存储弧表,如上面的弧表就是按照这样的顺序存储的。

    (iv)邻接表表示法

      邻接表表示法将图以邻接表(adjacency  lists)的形式存储在计算机中。所谓图的邻接表,也就是图的所有节点的邻接表的集合;而对每个节点,它的邻接表就是它的所有出弧。邻接表表示法就是对图的每个节点,用一个单向链表列出从该节点出发的所有弧,链表中每个单元对应于一条出弧。为了记录弧上的权,链表中每个单元除列出弧的另一个端点外,还可以包含弧上的权等作为数据域。图的整个邻接表可以用一个指针数组表示。例如,例7所示的图,邻接表表示为

    (v)星形表示法

    星形(star)表示法的思想与邻接表表示法的思想有一定的相似之处。对每个节点,它也是记录从该节点出发的所有弧,但它不是采用单向链表而是采用一个单一的数组表示。也就是说,在该数组中首先存放从节点1出发的所有弧,然后接着存放从节点2出发的所有孤,依此类推,最后存放从节点 出发的所有孤。对每条弧,要依次存放其起点、终点、权的数值等有关信息。这实际上相当于对所有弧给出了一个顺序和编号,只是从同一节点出发的弧的顺序可以任意排列。此外,为了能够快速检索从每个节点出发的所有弧,我们一般还用一个数组记录每个节点出发的弧的起始地址(即弧的编号)。在这种表示法中,可以快速检索从每个节点出发的所有弧,这种星形表示法称为前向星形(forward star)表示法。

    例如,在例7所示的图中,仍然假设弧(1,2),(l,3),(2,4),(3,2),(4,3),(4,5),(5,3)和(5,4)上的权分别为8,9,6,4,0,3,6和7。此时该网络图可以用前向星形表示法表示如下:

    《星形表示法详解及其转化算法》

    注意:上面的第一张表实际上有个错误,仔细看的童鞋应该能发现,起始地址point(i) : 1 , 3 , 4 , 5 , 7 , 9 ,那个6应该是5

    通常情况下会设置一个st[i] 数组,和STL类似, [st[i],st[i+1]) 恰好为以结点i开头的边下标。对应于上个例子的第一张表,则该数组为:

    void star2lsrs ()
     {
         memset (son , 0 , sizeof (son )); /*清零, 为零代表链表为空son */
         for(i = 1; i <= n; i ++)
         /*按逆序考虑各个结点,则最后的链表是顺序的*/
         for(j = st[i +1] -1; j >= st[i ]; j --)
             {
                 bro[j ] = son[i];
                 son[i ] = v[j ]; /*插到链表首部*/
             }
    }

    图最常用的表示法是邻接矩阵和邻接表。对于静态图(建图完毕后不再修改图的结构)往往用前向星来代替邻接表,节省空间和时间。

    邻接矩阵不管输入格式如何,总是很容易得到邻接矩阵,只需要注意平行边的情况。
    前向星邻接矩阵本身就包含了顶点序,因此很容易转化为前向星:

    把邻接矩阵转换为前向星表示法:

     void matrix2star ()
    {
    /*上一条的第一端点初始化为(表示未出现),边数初始化为u0m0 */
    u = m = 0;
    for(i = 1; i <= n; i ++)
    for(j = 1; j <= n; j ++)
    {
    if(a[i][j])
    {
    [++m ] = j;
    while (u < i)
    st [++u ] = m;
    }
    }
    }
     /*
    在程序中,u代表上一条边的第一个顶点编号,当u < i时代表这条边的第一端点还没有出现过,设置st[u + 1] : : : st[i]为m。
    */

    把边列表转化成前向星的方法类似,只需要把第一顶点相同的结点串成链表,用计数器法进行结点编号分配,和前向星转化成左儿子-右兄弟一样每次插入到链表首部,在O(m)时间内可以建立前向星表示。当然,也可以按第一顶点为关键字直接进行快速排序,不过速度稍微慢一些。


    原文转载地址:https://www.cnblogs.com/liushang0419/archive/2011/05/06/2039386.html

    展开全文
  • 3.4 算法及其实现一算法算法的表示在小品钟点工中宋丹丹讲了这样一个笑话说要把大象装冰箱一共分几步第一步 先把冰箱门打开第二...算法常用的表示方法有哪些 3. 算法的流程图表示检 测所谓算法就是解题方法的精确描述
  • 《图的表示方法》 (i)邻接矩阵表示法,如图:  也就是说,如果两节点之间一条弧,则邻接矩阵中对应元素为1;否则为0。可以看出,这种表示法非常简单、直接。但是,在邻接矩阵所有 个元素中,只有 个为...

    《图的表示方法》

    (i)邻接矩阵表示法,如图:

     2011050620274397.png2011050620285367.png

      也就是说,如果两节点之间有一条弧,则邻接矩阵中对应的元素为1;否则为0。可以看出,这种表示法非常简单、直接。但是,在邻接矩阵的所有 个元素中,只有 个为非零元。如果网络比较稀疏,这种表示法浪费大量的存储空间,从而增加了在网络中查找弧的时间。

      同样,对于网络中的权,也可以用类似邻接矩阵的 矩阵表示。只是此时一条弧所对应的元素不再是1,而是相应的权而已。如果网络中每条弧赋有多种权,则可以用多个矩阵表示这些权。

    (ii)关联矩阵表示法

    2011050620274397.png2011050620305033.png

      也就是说,在关联矩阵中,每行对应于图的一个节点,每列对应于图的一条弧。如果一个节点是一条弧的起点,则关联矩阵中对应的元素为1;如果一个节点是一条弧的终点,则关联矩阵中对应的元素为 -1;如果一个节点与一条弧不关联,则关联矩阵中对应的元素为0。对于简单图,关联矩阵每列只含有两个非零元(一个 1,一个-1)可以看出,这种表示法也非常简单、直接。但是,在关联矩阵的所有mn 个元素中,只有 2m个为非零元。如果网络比较稀疏,这种表示法也会浪费大量的存储空间。但由于关联矩阵有许多特别重要的理论性质,因此它在网络优化中是非常重要的概念。

      同样,对于网络中的权,也可以通过对关联矩阵的扩展来表示。例如,如果网络中每条弧有一个权,我们可以把关联矩阵增加一行,把每一条弧所对应的权存储在增加的行中。如果网络中每条弧赋有多个权,我们可以把关联矩阵增加相应的行数,把每一条弧所对应的权存储在增加的行中。

    (iii)弧表示法

    2011050620274397.png2011050620342548.png

    例如,例7所示的图,假设弧(1,2),(1,3),(2,4),(3,2),(4,3),(4,5),(5,3)和(5,4)上的权分别为8,9,6,4,0,3,6和7,则弧表表示如上:

    为了便于检索,一般按照起点、终点的字典序顺序存储弧表,如上面的弧表就是按照这样的顺序存储的。

    (iv)邻接表表示法

      邻接表表示法将图以邻接表(adjacency  lists)的形式存储在计算机中。所谓图的邻接表,也就是图的所有节点的邻接表的集合;而对每个节点,它的邻接表就是它的所有出弧。邻接表表示法就是对图的每个节点,用一个单向链表列出从该节点出发的所有弧,链表中每个单元对应于一条出弧。为了记录弧上的权,链表中每个单元除列出弧的另一个端点外,还可以包含弧上的权等作为数据域。图的整个邻接表可以用一个指针数组表示。例如,例7所示的图,邻接表表示为

    2011050620274397.png2011050620362625.png

    (v)星形表示法

    星形(star)表示法的思想与邻接表表示法的思想有一定的相似之处。对每个节点,它也是记录从该节点出发的所有弧,但它不是采用单向链表而是采用一个单一的数组表示。也就是说,在该数组中首先存放从节点1出发的所有弧,然后接着存放从节点2出发的所有孤,依此类推,最后存放从节点 出发的所有孤。对每条弧,要依次存放其起点、终点、权的数值等有关信息。这实际上相当于对所有弧给出了一个顺序和编号,只是从同一节点出发的弧的顺序可以任意排列。此外,为了能够快速检索从每个节点出发的所有弧,我们一般还用一个数组记录每个节点出发的弧的起始地址(即弧的编号)。在这种表示法中,可以快速检索从每个节点出发的所有弧,这种星形表示法称为前向星形(forward star)表示法。

    例如,在例7所示的图中,仍然假设弧(1,2),(l,3),(2,4),(3,2),(4,3),(4,5),(5,3)和(5,4)上的权分别为8,9,6,4,0,3,6和7。此时该网络图可以用前向星形表示法表示如下:

    2011050620394337.png2011050620274397.png

    《星形表示法详解及其转化算法》

    注意:上面的第一张表实际上有个错误,仔细看的童鞋应该能发现,起始地址point(i) : 1 , 3 , 4 , 5 , 7 , 9 ,那个6应该是5

    通常情况下会设置一个st[i] 数组,和STL类似, [st[i],st[i+1]) 恰好为以结点i开头的边下标。对应于上个例子的第一张表,则该数组为:

    st[6]={1,3,4,5,7,9};

    还会有一个数组对应于第二张表,主要使用第三行数据,

    v[8]={2,3,4,2,3,5,3,4};

    下面的程序把树的前向星表示转化成左儿子-右兄弟表示,以方便后续算法实现。

    1 void star2lsrs ()
    2 {
    3 memset (son , 0 , sizeof (son )); /*清零, 为零代表链表为空son */
    4 for(i = 1; i <= n; i ++)
    5 /*按逆序考虑各个结点,则最后的链表是顺序的*/
    6 for(j = st[i +1] -1; j >= st[i ]; j --)
    7 {
    8 bro[j ] = son[i];
    9 son[i ] = v[j ]; /*插到链表首部*/
    10 }
    11 }

    图最常用的表示法是邻接矩阵和邻接表。对于静态图(建图完毕后不再修改图的结构)往往用前向星来代替邻接表,节省空间和时间。

    邻接矩阵不管输入格式如何,总是很容易得到邻接矩阵,只需要注意平行边的情况。
    前向星邻接矩阵本身就包含了顶点序,因此很容易转化为前向星:

    把邻接矩阵转换为前向星表示法:

    1 void matrix2star ()
    2 {
    3 /*上一条的第一端点初始化为(表示未出现),边数初始化为u0m0 */
    4 u = m = 0;
    5 for(i = 1; i <= n; i ++)
    6 for(j = 1; j <= n; j ++)
    7 {
    8 if(a[i][j])
    9 {
    10 v[++m ] = j;
    11 while (u < i)
    12 st [++u ] = m;
    13 }
    14 }
    15 }
    16  /*
    17 在程序中,u代表上一条边的第一个顶点编号,当u < i时代表这条边的第一端点还
    18 没有出现过,设置st[u + 1] : : : st[i]为m。
    19  */

    把边列表转化成前向星的方法类似,只需要把第一顶点相同的结点串成链表,用计数器法进行结点编号分配,和前向星转化成左儿子-右兄弟一样每次插入到链表首部,在O(m)时间内可以建立前向星表示。当然,也可以按第一顶点为关键字直接进行快速排序,不过速度稍微慢一些

    转载于:https://www.cnblogs.com/liushang0419/archive/2011/05/06/2039386.html

    展开全文
  • 常用算法代码

    2017-09-11 11:26:53
    | 二分图匹配(HOPCROFT-CARP 的算法) 11 | 二分图最佳匹配(KUHN MUNKRAS 算法 O(M*M*N)) 11 | 无向图最小割 O(N^3) 12 | 上下界的最小(最大)流 12 | DINIC 最大流 O(V^2 * E) 12 | HLPP 最大流 O(V^3) ...
  • 常用编码格式算法

    2019-10-24 11:49:45
    Base64 是网络上最常见用于传输 8Bit 字节码编码方式之一,Base64 就是一种基于 64 个可打印字符来表示二进制数据的方法。可查看 RFC2045 ~ RFC2049 ,上面MIME详细规范。 Base64 编码是从二进制到字符...

    1、base64

    Base64 是网络上最常见的用于传输 8Bit 字节码的编码方式之一,Base64 就是一种基于 64 个可打印字符来表示二进制数据的方法。可查看 RFC2045 ~ RFC2049 ,上面有MIME的详细规范。

    Base64 编码是从二进制到字符的过程,可用于在 HTTP 环境下传递较长的标识信息。采用 Base64 编码具有不可读性,需要解码后才能阅读。

    Base64 由于以上优点被广泛应用于计算机的各个领域,然而由于输出内容中包括两个以上 “符号类” 字符(+, /, =),不同的应用场景又分别研制了 Base64 的各种 “变种”。为统一和规范化 Base64 的输出,Base62x 被视为无符号化的改进版本。

    引用:Base64百度百科

    按照 RFC2045 的定义,Base64 被定义为:Base64 内容传送编码被设计用来把任意序列的 8位字节 描述为一种不易被人直接识别的形式。(The Base64 Content-Transfer-Encoding is designed to represent arbitrary sequences of octets in a form that need not be humanly readable.)
    常见于邮件、http 加密,截取 http 信息,你就会发现登录操作的用户名、密码字段通过 BASE64 加密的。

    BASE64 的加密解密是双向的,可以求反解。

    案例实现:

    /**
     * Base64 编码、解码测试
     * <br/>
     */
    class Base64Test {
        public static void main(String[] args) {
    
            // 待编码的字符
            String originalStr = "111111";
            System.out.println(String.format("待编码的字符: %s", originalStr));
    
            /* jdk 实现 */
            System.out.println("=================jdk实现=================");
    
            // 获取编码器
            Base64.Encoder encoder1 = Base64.getEncoder();
    
            // 获取解码器
            Base64.Decoder decoder1 = Base64.getDecoder();
    
            // 编码测试
            byte[] encode1 = encoder1.encode(originalStr.getBytes());
            System.out.println(String.format("编码结果:%s", new String(encode1)));
    
            // 解码测试
            byte[] decode1 = decoder1.decode(encode1);
            System.out.println(String.format("解码结果:%s", new String(decode1)));
    
            /* Apache commons-codec 实现 */
            System.out.println("=================Apache commons-codec 实现=================");
    
            // 编码测试
            byte[] encode2 = org.apache.commons.codec.binary.Base64.encodeBase64(originalStr.getBytes());
            System.out.println(String.format("编码结果:%s", new String(encode2)));
    
            // 解码测试
            byte[] decode2 = org.apache.commons.codec.binary.Base64.decodeBase64(encode2);
            System.out.println(String.format("解码结果:%s", new String(decode2)));
    
            /* Spring 实现 */
            System.out.println("------------Spring 实现------------");
            String encodeToString = Base64Utils.encodeToString(originalStr.getBytes());
            System.out.println(String.format("编码结果:%s", encodeToString));
            System.out.println(String.format("解码结果:%s", new String(Base64Utils.decodeFromString(encodeToString))));
        }
    }
    

    运行结果如下:

    20191023215143.png


    2、base62x

    Base62x被视为无符号化的改进版本。

    码云地址:https://gitee.com/xenxin/Base62x

    目前用的人不多,还没有很好的 Java 实现,不过感觉未来会有发展。

    相关文章:Base62x比Base64的编码速度更快吗?


    3、url编码

    url编码 是一种浏览器用来打包表单输入的格式。浏览器从表单中获取所有的name和其中的值 ,将它们以name/value参数编码(移去那些不能传送的字符,将数据排行等等)作为URL的一部分或者分离地发给服务器。不管哪种情况,在服务器端的表单输入格式样子象这样:

    theName=Ichabod+Crane&gender=male&status=missing& ;headless=yes

    当URL地址里包含非西欧字符的字符串时,系统会将这些字符转换成 application/x-www-form-urlencoded 字符串,表单里提交时也是如此,当包含非西欧字符的字符串时,系统也会将这些字符转换成 application/x-www-form-urlencoded 字符串。

    URL编码遵循下列规则:

    每对name/value由&;符分开;每对来自表单的name/value由=符分开。如果用户没有输入值给这个name,那么这个name还是出现,只是无值。任何特殊的字符(就是那些不是简单的七位ASCII,如汉字)将以百分符%用十六进制编码,当然也包括象 =,&;,和 % 这些特殊的字符。其实url编码就是一个字符ascii码的十六进制。不过稍微有些变动,需要在前面加上“%”。比如“\”,它的ascii码是92,92的十六进制是5c,所以“\”的url编码就是%5c。

    相关文章:


    Java实现:

    /**
        * URLEncoder & URLDecoder 测试
        */
    public static void main(String[] args) throws UnsupportedEncodingException {
        /* 测试编码 */
        // 将普通字符串转换成 application/x-www-form-urlencoded 字符串 采用 UTF-8 字符集进行编码
        String encode = URLEncoder.encode("北京大学", "UTF-8");
        System.out.println(String.format("编码结果:%s", encode));
    
        /* 测试解码 */
        //将 application/x-www-form-urlencoded 字符串转换成普通字符串 采用 UTF-8 字符集进行解码
        String decode = URLDecoder.decode(encode, "UTF-8");
        System.out.println(String.format("解码结果:%s", decode));
    }
    

    运行结果如下:

    20191023172337.png

    展开全文
  • 常用排序算法3

    2013-03-03 16:46:41
    十种排序算法分析(3) 那么,什么方法可以不用比较就能排出顺序呢?...由于数字可能重复,因此Hash表概念需要扩展,我们需要把数组类型改成整型,用来表示每个数出现次数。 看这样一个例子,...
  • 纯粹协同方法的输入数据只有给定用户-物品评分矩阵,输出数据一般以下几种类型:(1)表示当前用户对物品喜欢或不喜欢程度预测数值;(2)n项推荐物品列表。用户行为统一表示:user id产生行为用户唯一...
  • 一个经典算法的5个特征:穷性、确切性、输入、输出和可行性。...数据结构表示的是处理对象,算法是计算和处理核心方法,程序设计语言是算法的实现方式。 算法的性能评价:时间复杂度、空间复杂...
  • 机器学习常用算法

    2020-03-23 12:30:51
    利用数理统计中回归分析,来确定两个或以上变量之间相互依赖变量关系一种统计分析方法,只有一个自变量和一个因变量,两者之间关系可以用线性表示,该回归分析为一元线性回归,若包括两个及以上自变量,自...
  • 常用Java排序算法

    2015-03-24 20:10:00
    f(n) 算法基本操作执行的方法 n表示算法的规模 O(n) f(n)量级 稳定性: 同样元素相对位置在排序前后是否可能发生变化 冒泡排序 普冒 public class SortUtil { public static SortService bubble = ...
  • 算法介绍●算法概述算法是对特定问题求解步骤一种描述,它是指令有限序列,其中每条指令表示一个或多个操作。算法是独立存在一种解决问题的方法和思想。●算法的特性穷性:一个算法必须在执行穷步之后...
  • 怎样表示一个算法

    千次阅读 2019-11-11 09:39:15
    为了表示一个算法,可以采用不同的方法,常用的方法有: ① 用自然语言表示算法 ② 流程图表示算法 ③ 用伪代码表示算法 ④ 用计算机语言表示算法 ...
  • 常用算法分析与设计

    千次阅读 2008-04-22 19:33:00
    常用的算法设计方法: 1.1 迭代法 1.2 穷举搜索法 1.3 递推法 1.4 递归法 1.5 贪婪法 1.6 分治法 1.7 动态规划法 1.8 回溯法算法基础部分:算法是对特定问题求解步骤的一种描述,算法是指令的有限序列,其中...
  • 常用算法一 一、计数、求和、求阶乘等简单算法 此类问题都要使用循环,要注意根据问题确定循环变量初值、终值或结束条件,更要注意用来表示计数、和、阶乘变量初值。 例:计算 直到最后一项绝对值小于1e-7时...
  • 几种表示方法

    2020-05-17 15:06:10
    一般来说, 算法的好坏与网络具体表示方法,以及中间结果操作方案是关系。这里我们介 绍计算机上用来描述图与网络 5 种常用表示方法:邻接矩阵表示法、关联矩阵表示法、 弧表表示法、邻接表表示法和星形...
  • String常用的方法

    2017-06-04 10:39:27
    String 的常用方法: 此程序可正常运行; //向上冒泡算法 public class Sort { String [] str = { }; public void sort(int [] myArray){ int flag =1; //flag 1表示有替换,0表示无替换。 int temp ; ...
  • 常见排序方法的时间与空间复杂度 平均情况时间复杂度 最坏和最好情况是极端情况,发生概率并不大。为了更有效的表示平均情况下时间复杂度,引入另一个概念:平均情况时间复杂度,全称叫加权平均时间复杂度或者...
  • 特征选择主要两个功能:减少特征数量、降维,使模型泛化能力更强,减少过拟合增强对特征和特征值之间理解好特征选择能够提升模型性能,更能帮助我们理解数据特点、底层结构,这对进一步改善模型、算法都...
  • 算法(Algorithm) 代表着用系统的方法描述解决问题策略机制,可以通过一定规范输入,在有限时间内获得所需要输出。 一个算法的好坏是通过...常见时间复杂度“大O表示法”描述以下几种: 时间复杂度 ...
  • 基于关联规则推荐三种方法:Apriori关联规则算法FP Tree关联规则算法;PrefixSpan关联规则算法;关联规则挖掘推荐算法:关联规则挖掘是一种在大规模交易中识别类似规则关系模式通用技术,可以应用到推荐系统中...
  • 背景 修路问题: (1)七个村庄(A-G),现需要修路把7个村庄连通 (2)各个村庄的距离用边线(权值)表示,例如村庄A到村庄B的距离为5公里 ...求解最小生成树的算法主要普里姆算法和克鲁斯卡尔算法。 普里姆算法
  • 1.常用的特征工程方法哪些,举例说明 2.梯度下降法和牛顿法的比较 3.xgboost算法过程推导 特征工程 1.定义: 数据是信息的载体,但是原始的数据包含了大量的噪声,信息的表达也不够简练。因此,特征工程的...
  • 常用的加密技术主要分为两类:接近表示加密和不接近表示加密,AES加密是一种接近表示加密,即使用加密 泄露秘密沟通的关键。 它的全名是AdvancedEncryption Standard(高端加密标准)。 如果用它代替DES加密算法,它...
  • 2.1.7 常用的数据结构 2.1.8 选择合适的数据结构解决实际问题 2.2 线性表 2.2.1 什么是线性表 2.2.2 线性表的基本运算 2.3 顺序表结构 2.3.1 准备数据 2.3.2 初始化顺序表 2.3.3 计算顺序表长度 2.3.4 插入结点 ...
  • ●欧氏距离(最易于理解一种距离计算方法,源自欧式空间中两点间距离公式)d=sqrt((x1-x2)2+...与欧氏距离不同是它考虑到各种特性之间联系(例如:一条关于身高信息会带来一条关于体重信息,因为两者是
  • 对于简单多边形(边不自交)两种方法可以判断, 第一种是看该点与多边形每条边构成三角形面积和是否等于多边形总面积.转角法 第二种是刘汝佳&lt;&lt;训练指南&gt;&gt;P271页介绍射线法模板. ...
  • 常用算法梳理-决策树

    2016-06-11 09:11:00
    树由节点和向边组成,节点分内部节点(特征或属性)和叶节点(表示一个类) 用决策树分类,从根节点开始,对实例某一特征进行测试,根据测试结果,将实例分配到其子节点。重复上述过程,直到达到叶节点。 首先...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 734
精华内容 293
关键字:

常用的算法表示方法有