zoukankan      html  css  js  c++  java
  • 算法习题---5.1大理石在哪(UVa10474)

    一:题目

    现有N个大理石,每个大理石上写了一个非负整数、首先把各数从小到大排序,然后回答Q个问题。
    每个问题问是否有一个大理石写着某个整数x,如果是,还要回答哪个大理石上写着x。
    排序后的大理石从左到右编号为1
    ~N。(在样例中,为了节约篇幅,所有大理石的数合并到一行,所有问题也合并到一行。)

    (一)样例输入

    4 1
    2 3 5 1
    5
    5 2
    1 3 3 3 1
    2 3

    (二)样例输出

    CASE# 15 found at 4
    CASE# 22 not found
    3 found at 3 

    二:代码实现

    #define _CRT_SECURE_NO_WARNINGS
    #include <iostream>
    #include <algorithm>
    using namespace std;
    
    #define MAX_LEN 1000
    int a[MAX_LEN];
    
    int main()
    {
        FILE* fp = freopen("data5_1.in", "r", stdin);
        freopen("data5_1.out", "w", stdout);
        int i = 0,num,c,val,pos;
    
        while (!feof(fp))
        {
            //输入提示信息
            cout << "CASE# " << ++i << ":" << endl;
            //获取初始信息
            cin >> num >> c;
            for (int j = 0; j < num; j++)
                cin >> a[j];
            //进行排序
            sort(a, a + num);    //看源码 是左闭右开 默认是less升序排序
            //获取查询信息
            for (int j = 0; j < c; j++)
            {
                cin >> val;
                pos = lower_bound(a, a + num, val) - a;
                if (a[pos] == val)
                    cout << val << " found at " << pos + 1 << endl;
                else
                    cout << val << " not found" << endl;
            }
        }
    
        freopen("CON", "r", stdin);
        freopen("CON", "w", stdout);
        return 0;
    }

    (一)sort方法

    sort使用数组的默认的大小比较运算符进行排序。其排序规则可以按照需要进行自定义。
    sort(a,a+n)可以对数组a[n]进行默认排序
    其中sort不止可以对数组排序,他可以对任一对象进行排序,因为sort是一个模板函数

    (二)lower_bound方法

    lower_bound用于查找大于或者等于x的第一个位置
  • 相关阅读:
    Hibernate映射Map属性2
    Ajax向Controller发送请求并接受数据需要注意的一个细节
    设置 jsp 表格相邻两行的颜色不一样
    Hibernate映射Map属性
    自己写的爬虫
    在一个jsp页面中引用另一个jsp文件的路径的问题
    state设计原则
    项目图标库怎样选择
    一些有用的插件
    Hook
  • 原文地址:https://www.cnblogs.com/ssyfj/p/11512131.html
Copyright © 2011-2022 走看看