zoukankan      html  css  js  c++  java
  • 笔记

    如果要将两个for嵌套循环的值每个都相加,例如

    for(int i = 0;i < n;i++)
        {
            for(int j = 0;j < n;j++)
            {
                k[i * n + j] = k[i] + k[j];
    //            cout << l * n + p << " ";
            }
        }

    每个相加一遍,总共需要相加n的二次方次,如果要将值存入另外一个数组中,那么这个数组k的每个下标应该即为i*n+j,也就是0,1,2,...,n,这样就可以实现两个数组的相关操作有序的存到一个数组中。

    题目:

    STL中二分函数的使用

    #include<iostream>
    #include<bits/stdc++.h>
    using namespace std;
    
    int main()
    {
        int n,m,k[50],temp[500];
        cin >> n >> m;
        for(int i = 0;i < n;i++)
            cin >> k[i];
        
        for(int l = 0;l < n;l++)
        {
            for(int p = 0;p < n;p++)
            {
                temp[l * n + p] = k[l] + k[p];
    //            cout << l * n + p << " ";
            }
        }
        sort(temp,temp + n * n);
        int flag = 0;
        for(int i = 0;i < n;i++)
        {
            for(int j = 0;j < n;j++)
            {
                if(binary_search(temp,temp + n * n,m - k[i] - k[j]))
                {
                    flag = 1;
                }
            }
        }
        if(flag == 1)
            cout << "Yes" << endl;
        else
            cout << "No" << endl;
        
        return 0;
    }

    在其他人的博客中看到的STL二分函数的一些总结,如下:

    1. binary_search(arr[],arr[]+size , index)

    二分查找,其中,arr[] 表示数组首地址,size表示元素个数,index则表示查找的元素,首要的一点是数组必须是有序的,并且一定是从小到大的,非递减的。可以看出 size 和sort 等函数的使用方法都是一样的,都是到最后元素的下一位

    2. lower_bound(arr[],arr[]+size,index)

    查找在范围内大于或等于index的数组元素中第一个元素的地址,相当于一个指针值

    3.upper_bound(arr[],arr[]+size,index)

    查找在范围内大于index的数组元素中第一个元素的地址,相当于一个指针值。暂时还没找到找出第一个小于index的数组元素的函数。

  • 相关阅读:
    最大流——poj3308 (模板)
    混合边的欧拉路径——poj1637 最大流
    JBPM FAQ
    spring 读取资源文件方法
    JBPM使用assignHandler进行用户分派思路
    直接修改jpbm xml流程定义字段的方法
    转 java 读取文件的字符集
    JAVA实现AD验证
    找到一篇jbpm session closed解决办法的文章
    dwr 读取cookie
  • 原文地址:https://www.cnblogs.com/biaobiao88/p/11833126.html
Copyright © 2011-2022 走看看