POJ C++程序设计 编程题#1 编程作业—STL2

编程题#1

来源: POJ (Coursera声明:在POJ上完成的习题将不会计入Coursera的最后成绩。)

注意: 总时间限制: 1000ms 内存限制: 65536kB

描述

下面的程序用枚举法解决如下问题,请填空。

平面上的一个矩形,如果其边平行于坐标轴,我们就称其为“标准矩形”。给定不重复的 n 个整点(横、纵坐标都是整数的点),求从这n个点中任取4点作为顶点所构成的四边形中,有多少个是标准矩形。

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
struct Point {
    int x;
    int y;
    Point(int x_,int y_):x(x_),y(y_) { }
};
bool operator < ( const Point & p1, const Point & p2)
{
    if( p1.y < p2.y )
        return true;
    else if( p1.y == p2.y )
        return p1.x < p2.x;
    else
        return false;
}
int main()
{
    int t;
    int x,y;
    cin >> t;
    vector<Point> v;
    while( t -- ) {
        cin >> x >> y;
        v.push_back(Point(x,y));
    }
    vector<Point>::iterator i,j;
    int nTotalNum = 0;
// 在此处补充你的代码
return 0;
}

输入

第一行是点的数目

其后每一行都代表一个点,由两个整数表示,第一个是x坐标,第二个是y坐标

输出

输出标准矩形的数目

样例输入

6
2 3
2 5
4 5
4 4
2 4
4 3

样例输出

3

提示

所缺代码具有如下形式:

    _____________________;
    for( i = v.begin(); i < v.end() - 1;i ++ )
        for(_____________; ______________; _____________) {
            if(binary_search(v.begin(),v.end(),Point( j->x, i->y)) &&
                ____________________________________________ &&
                ____________________________________________ &&
                ____________________________________________ )
                nTotalNum ++;
        }
    cout << _________________;

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
struct Point {
    int x;
    int y;
    Point(int x_,int y_):x(x_),y(y_) { }
};
bool operator < ( const Point & p1, const Point & p2)
{
    if( p1.y < p2.y )
        return true;
    else if( p1.y == p2.y )
        return p1.x < p2.x;
    else
        return false;
}
int main()
{
    int t;
    int x,y;
    cin >> t;
    vector<Point> v;
    while( t -- ) {
        cin >> x >> y;
        v.push_back(Point(x,y));
    }
    vector<Point>::iterator i,j;
    int nTotalNum = 0;
// 在此处补充你的代码
    sort(v.begin(),v.end());
    for( i = v.begin(); i < v.end() - 1;i ++ )
        for(j = i+1; j < v.end(); j++) {
            if(binary_search(v.begin(),v.end(),Point( j->x, i->y)) &&
               binary_search(v.begin(),v.end(),Point(i->x, j->y)) &&
               i ->x != j->x &&
               i->y != j->y )
                nTotalNum ++;
        }
    cout << nTotalNum / 2;
    return 0;
}
时间: 2024-10-24 22:13:30

POJ C++程序设计 编程题#1 编程作业—STL2的相关文章

小米2015笔试编程题

小米2015笔试编程题 1.[编程题] 懂二进制 时间限制:1秒 空间限制:32768K 世界上有10种人,一种懂二进制,一种不懂.那么你知道两个int32整数m和n的二进制表达,有多少个位(bit)不同么? 输入例子1: 1999  2299 输出例子1: 7 分析:第一步求这两个数的异或,得到一个新的数,相同位是0,不同位是1:第二步采用位运算求这个数里边1的个数即为结果 1 class Solution { 2 public: 3 /** 4 * 获得两个整形二进制表达位数不同的数量 5

POJ C++程序设计 编程题#3 Set 编程作业—STL2

编程题#3:Set 来源: POJ (Coursera声明:在POJ上完成的习题将不会计入Coursera的最后成绩.) 注意: 总时间限制: 5000ms 内存限制: 100000kB 描述 现有一整数集(允许有重复元素),初始为空.我们定义如下操作: add x 把x加入集合 del x 把集合中所有与x相等的元素删除 ask x 对集合中元素x的情况询问 对每种操作,我们要求进行如下输出. add 输出操作后集合中x的个数 del 输出操作前集合中x的个数 ask 先输出0或1表示x是否曾

POJ C++程序设计 编程题#2 编程作业—文件操作与模板

编程题#2: 实数的输出格式 来源: POJ (Coursera声明:在POJ上完成的习题将不会计入Coursera的最后成绩.) 注意: 总时间限制: 1000ms 内存限制: 1000kB 描述 利用流操纵算子实现: 输入一个实数,先以非科学计数法输出,小数点后面保留5位有效数字:再以科学计数法输出,小数点后面保留7位有效数字. 注意:在不同系统.编译器上的输出格式略有不同,但保证在程序中采用默认格式设置一定能在OJ平台上得到正确结果. 输入 以非科学计数法表示的一个正实数,保证可以用dou

POJ C++程序设计 编程题#3 编程作业—文件操作与模板

编程题#3: 整数的输出格式 来源: POJ(Coursera声明:在POJ上完成的习题将不会计入Coursera的最后成绩.) 注意: 总时间限制: 1000ms 内存限制: 1000kB 描述 利用流操纵算子实现: 输入一个整数,先将该整数以十六进制输出,然后再将该整数以10个字符的宽度输出,宽度不足时在左边补0. 注意:在不同系统.编译器上的输出格式略有不同,但保证在程序中采用默认格式设置一定能在OJ平台上得到正确结果. 输入 一个正整数,保证可以用int类型存储. 输出 第一行:以十六进

POJ C++程序设计 编程题#3 编程作业—多态与虚函数

编程题 #3 来源: POJ (Coursera声明:在POJ上完成的习题将不会计入Coursera的最后成绩.) 注意: 总时间限制: 1000ms 内存限制: 65536kB 描述 下面的程序输出结果是: A::Fun A::Do A::Fun C::Do 请填空: #include <iostream> using namespace std; class A { private: int nVal; public: void Fun() { cout << "A:

POJ C++程序设计 编程题#1 编程作业—STL1

编程题#1 来源: POJ (Coursera声明:在POJ上完成的习题将不会计入Coursera的最后成绩.) 注意: 总时间限制: 1000ms 内存限制: 65536kB 描述 下面的程序输出结果是: 1 2 6 7 8 9 请填空: #include <iostream> #include <iterator> #include <set> using namespace std; int main() { int a[] = {8,7,8,9,6,2,1};

POJ C++程序设计 编程作业—类和对象 编程题#1

编程题#1 来源: POJ (Coursera声明:在POJ上完成的习题将不会计入Coursera的最后成绩.) 注意: 总时间限制: 1000ms 内存限制: 65536kB 描述 下面程序输出的结果是: 0 5 请填空: #include <iostream> using namespace std; class A { public: int val; // 在此处补充你的代码 }; main() { A a; cout << a.val << endl; a.G

POJ C++程序设计 编程作业—类和对象 编程题 #2

编程题 #2 来源: POJ (Coursera声明:在POJ上完成的习题将不会计入Coursera的最后成绩.) 注意: 总时间限制: 1000ms 内存限制: 65536kB 描述 下面程序的输出是: 10 请补足Sample类的成员函数.不能增加成员变量. #include <iostream> using namespace std; class Sample{ public: int v; Sample(int n):v(n) { } // 在此处补充你的代码 }; int main

POJ C++程序设计 编程作业—类和对象 编程题#3

编程题 #3 来源: POJ (Coursera声明:在POJ上完成的习题将不会计入Coursera的最后成绩.) 注意: 总时间限制: 1000ms 内存限制: 65536kB 描述 下面程序的输出结果是: 5,5 5,5 请填空: #include <iostream> using namespace std; class Base { public: int k; Base(int n):k(n) { } }; class Big { public: int v; Base b; //