next_permutation(a+1,a+n+1) 用於求解a陣列的下乙個較大的排列。
prev_permutation則與之相反,求解下乙個較小的排列。
函式引數均為陣列起始座標,和終止座標,如果存在下乙個排列,則返回1,否則返回0,同時把該陣列變為下乙個排列。
應用前景廣泛。
例項**:
#include#include#include#include#include#include#include#include#include#include#include#include#include#define dd double
#define ld long double
#define ll long long
#define ull unsigned long long
#define n 10
#define m number
using namespace std;
int n,a[n];
inline void print()
int main()
作用:求解第k小的數,並保證,第k小的數在第k位,前k個數均比這個數小,後面的數均大於等於這個數
引數 nth_element(a+1,a+k+1,a+n+1,cmp)
其中的意思為,在1到n這個區間的陣列a中,把第k大的數放在第k位(相當於1來說),前面的數均比它小,後面的數均比它大。cmp為自定義比較函式。 nth_element預設是越小優先順序越高。我們通過類似於sort的自定義函式,可以改變其優先順序。
事件負責度\(o(n)\),相當於用快速排序。比sort一遍要優。
**:
#includeusing namespace std;
bool cmp(int a, int b)
int main()
; int b[10] = ;
int c[10] = ;
nth_element(a+1,a+3,a+10);
//將下標為2,也就是第3個數放在正確的位置
//也就是求的是第3小
cout <<"第3小是:"<< a[3] << endl;
for(int i = 1; i < 10; i++)
cout << a[i] << " "; puts("");//注意下標是從0開始計數的
//那麼求第3大,就是求第9-3+1小,即第7小
//也就是將下標為6的第7個數,放在正確的位置
nth_element(b+1,b+7,b+10);
cout <<"第3大是:"<< b[7] << endl;
for(int i = 1; i < 10; i++)
cout << b[i] << " "; puts("");//注意下標是從0開始計數的
nth_element(c+1,c+3,c+10,cmp);//第一種方法
//nth_element(c,c+2,c+9,greater()); //第二種方法
cout <<"第3大是:"<< c[3] << endl;
for(int i = 1; i < 10; i++)
cout << c[i] << " "; //注意下標是從0開始計數的
}
nginx 未完待續
yum install y pcre yum install y pcre devel yum install y openssl yum install y openssl devel yum install y zlib yum install y gccyum安裝 yum install y ...
sqlparse(未完待續)
sqlparse.split sql,encoding none sql 包含乙個或多個sql語句的字串 encoding 語句的編碼 可選 sql select from foo select from bar sql list sqlparse.split sql print sql list ...
CALayer使用(未完待續)
一 什麼是calayer?在ios系統中,你能看得到摸得著的東西基本都是uiview。比如乙個按鈕 乙個文字標籤 乙個文字輸入框 乙個圖示等等,這些都是uiview。其實uiview之所以顯示在螢幕上,完全是因為它內部的乙個層。在建立uiview物件時,uiview內部會自動建立乙個層 即calay...