数组离散化
補充知識點
數據離散化,
為什么數組離散化?因為如果用數據權值為下標,存不下。這個時候需要把待離散化的數組中的每一個數映射到一個小一點的數組中去。
離散化關心數據的相對大小,不關心一個數具體多大。
使用c++標準模板庫函數進行離散化代碼排序+二分查找,相對位置不變。
#include<iostream> #include<algorithm> using namespace std; const int maxn=20; int n,a[maxn],b[maxn]; int main(){cin>>n;for(int i=1;i<=n;i++){cin>>a[i],b[i]=a[i];}sort(b+1,b+n+1);for(int i=1;i<=n;i++){a[i]=lower_bound(b+1,b+1+n,a[i])-b;//離散化} for(int i=1;i<=n;i++){cout<<a[i]<<" ";} }離散化之后的結果
總結
- 上一篇: c++98不支持set初始化列表
- 下一篇: hdu1166敌兵布阵 树状数组裸题