使用STL离散化

August 22, 2013

把原来的数组a复制一份拷贝b 用sort先把数组a排序 用unique消除a里面重复的元素 对于b中的每一个元素,用lower_bound找到它在a中的位置,也就是离散化之后的编号。 没了。

#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cmath>
#include <cctype>
#include <algorithm>
#include <queue>
#include <deque>
#include <queue>
#include <list>
#include <map>
#include <set>
#include <vector>
#include <utility>
#include <functional>
#include <fstream>
#include <iomanip>
#include <sstream>
#include <numeric>
#include <cassert>
#include <ctime>
#include <iterator>
const int INF = 0x3f3f3f3f;
const int dir[8][2] = {{-1,0},{1,0},{0,-1},{0,1},{-1,-1},{-1,1},{1,-1},{1,1}};
using namespace std;
int main(void)
{
    int a[6] = {15, 14, 11, 20, 13, 13}, b[111];
    for (int i=0; i < 6; ++i) b[i] = a[i];
    sort(a, a+6);
    int len = unique(a, a+6) - a;
    for (int i = 0;i < 6; ++i)
        b[i] = lower_bound(a, a+len, b[i]) - a + 1;
    for (int i = 0; i < 6; ++i)
        printf("%d ", b[i]);
    printf("\n");

    return 0;
}

嗨!中村。

comments powered by Disqus