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的第一个位置
  • 相关阅读:
    编程实现SQL Server数据库导入导出操作
    C#正则表达式入门
    Winform实现窗体抖动的效果代码
    js获取当前日期,格式为YYYYMMDD
    XML基本知识及其技术指南
    WPF学习心得
    脚本调试
    标题:VS2008简体中文专业版
    使用 XML Schema 定义元素的基本知识2
    C#操作xml文件入门
  • 原文地址:https://www.cnblogs.com/ssyfj/p/11512131.html
Copyright © 2011-2022 走看看