zoukankan      html  css  js  c++  java
  • 算法06

    哈希函数的特性:

    • 哈希函数的输入是无穷的
    • 哈希函数的输出是有限的
    • 哈希函数对于同一个数据,返回的结果是一样的,不是随机的
    • 由于输入是无穷的,输出是有限的,则必然多个输入会对应同一个输出
    • 哈希函数的返回具有离散型,对于很多个不同的输入,一定会出现相同的输出,相同的输出具有均匀分布的特点 (加入输入是(0,99),输出是(0,1),那么输出的 0 1 会均匀分布) 
    • 补充:哈希函数有很多种,内部的结构很复杂,假如我们需要一千种不同的哈希,我们是不是要找一千种哈希函数,其实不需要,我么可以根据一个哈希函数得到我们想要的一千种结果。假如哈希函数返回一个16位的16进制的数,我们可以分为 H1 = 高八位,H2 = 低八位  H(新) = H1 + bH2 ,b的值可以所以改变,现在得到的新的哈希值和原来的哈希值不具备正向相关。

    实力不够,以后接着写

    。。。。。。。。。。。。。。。。。。。。。。。。。

    求最大连续子串的和:一个循环,如果求到某个值是个负数,则舍弃前面的数。

    #include<iostream>
    using namespace std;
    
    int main()
    {
        int a, b[100];  //a代表输入数字的长度  b用来接收数字
        cin >> a;
        for (int i = 0; i < a; i++)
        {
            cin >> b[i];
        }
        int item = -99999, thissum = 0;
        for (int i = 0; i < a; i++)
        {
            thissum += b[i];
            if (thissum < 0)
            {
                thissum = 0;
            }
            if (thissum > item)
            {
                item = thissum;
            }
        }
        cout << "最长子序列:" << item<<endl;
        return 0;
    
    }
    View Code

     最小和问题:一个数字数组,下标为0的数如果比下标为1的数小,则下标为0的数是最小和,下标为最后一个数的数比下标为最后一个数的前一个数的数小,则下标为最后一个数的数是最小和,其次下标不是最后和最前的数必须比他两端的数还要小才是最小和,给出一个这样的数组,求出任意一个最小和,我们可以使用二分来做这个题

    #include<iostream>
    using namespace std;
    
    int main()
    {
        int a, b[100]; //a表示这个数字数组的的长度,b用来存贮这组数字,这些数字不会重复
        cin >> a;
        for (int i = 0; i < a; i++)
        {
            cin >> b[i];
        }
        int lef = 0;
        int rit = a - 1;
        int min,mid;
        if (b[lef] < b[lef + 1])
        {
            min = b[lef];
        }
        else if (b[rit] < b[rit - 1])
        {
            min = b[rit];
        }
        else
        {
            while (lef < rit)
            {
                mid = lef + ((rit - lef) >> 1);
                if (b[mid] < b[mid + 1] && b[mid] < b[mid - 1])
                {
                    min = b[mid];
                    break;
                }
                else if (b[mid] > b[mid + 1])
                {
                    lef = mid;
                }
                else
                {
                    rit = mid;
                }
            }
        }
        cout << "最小和:" << min << endl;
        return 0;
    }
    View Code
  • 相关阅读:
    Springboot整合Thymeleaf,Thymeleaf页面引入静态资源
    SpringBoot 使用thymeleaf 跳转页面时,总是提示404找不到页面
    项目报错:jdbcUrl is required with driverClassName.
    Springboot配置拦截器无法跳转登录页面
    查看 SELinux状态及关闭SELinux
    Solaris平台,如何通过端口号快速查看PID(进程)
    getApplicationContext()、getBasecontext()、getApplication() 、getParent()
    android工程下不能运行java main程序的解决办法
    SDCardUtils
    BaseAdapter
  • 原文地址:https://www.cnblogs.com/luojianyi/p/9642738.html
Copyright © 2011-2022 走看看