离散化

压缩坐标上的点,只保留相对位置关系,忽略其具体大小
例如四个点 2, 9, 1000, 82
可以将他们转化为0,1,3,2这四个点,位置关系不变,但数值的范围变小了,有利于存储

int lsh[1000], lshcopy[1000], sy[1000];
int main()
{
    int n;
    scanf("%d", &n);
    for (int i = 0; i < n; i++)
    {
        scanf("%d", &sy[i]);
        lshcopy[i] = sy[i];
    }
    sort(sy, sy + n);
    int size = unique(sy, sy+n) - sy;
    for (int i = 0; i < n; i++)
    {
        lsh[i] = lower_bound(sy, sy + size, lshcopy[i]) - sy;
        printf("%d\n",lsh[i]);
    }
    return 0;
}

你可能感兴趣的:(algorithm)