關於字典序的若干問題

2022-01-25 06:14:15 字數 1661 閱讀 6251

1.六個數里取所有三個數的全排列按字典序輸出

法一:我記得比賽時我用的是二維陣列,每一維先排序,竟然立馬水過了,後來我想要是數多了就很麻煩,於是有了下面的方法。

法二:

1 #include 2 #include 3 #include 4

using

namespace

std;56

const

int maxn = 25;7

intn,num;

8int

a[maxn];

9bool vis[maxn] = ;

1011

void fun(int

cnt)

1222

else

23for(int i=1; i<=n; i++)

24if(!vis[i])

2531}32

33int

main()

34

2.求字典序的第k的排列

參見poj 1037(不只是簡單地求第幾個排列),下面的方法都超時(應該是wa)了;參加黑書p257,也可以求1開頭的共幾個排列,這樣逼近,不過若是位數較多,陣列開不了

法一:

1

//超時,求第幾個排列

2 #include 3 #include 4 #include 5

using

namespace

std;67

const

int maxn = 25;8

intn,k;

9int

a[maxn];

1011

void

solve()12

2526 }while(next_permutation(a,a+n));27}

2829

intmain()

3042

return0;

43 }

法二:

1 #include 2 #include 3 #include 4

using

namespace

std;56

const

int maxn = 25;7

intn,k;

8int

a[maxn];

9int cnt = 0;10

11void solve(int

cur)

1224}25

else

26for(int i=1; i<=n; i++)

2737}38

}394041

intmain()

4252

return0;

53 }

一.上乙個排列

普通演算法沒找到,可以直接prev_permutation()

二.下乙個排列

a.普通演算法

從最後一位 找到第乙個非遞減的位數,假設最末尾連續的遞減位數為k;例如12354   54是遞減的 所以找到3 k=2;然後將這一位與最後一位互換 例如12354 換成12453;那後k位是降序序的 ;所以將最後k位改成公升序即可。

b.

1 #include2 #include3

using

namespace

std;45

intmain()

6

關於fusionchart的若干問題

最近在做的乙個專案用到fusionchart這個外掛程式,期間遇到了一些問題,特整理出來以備忘,更與後來人分享 1 關於傳參。一般我們都是通過setdataurl url 來調後台的服務類獲取所要展現的資料,可是我們經常會在url中通過 傳多個查詢引數,這時一般都會出錯。這是因為編碼的問題,要通過e...

關於TCP連線的若干問題

從 url 在瀏覽器被被輸入到頁面展現的過程中發生了什麼?基本路徑為 1 url解析 dns解析查詢網域名稱ip位址 2 tcp 連線 tcp 三次握手 3 網路連線發起http請求 4 伺服器接收資料並響應請求 mvc 5 伺服器返回 http 報文,客戶端接收資料 6 瀏覽器載入 渲染頁面 7 ...

ceph若干問題

ceph health可以檢視ceph集群健康狀況 ceph df 可以檢視儲存的總使用率與各pool的使用率 ceph osd df 可以檢視各osd的使用率 ceph s 或 ceph status 可以檢視集群整體狀態 首先,我們要知道ceph的osd的位址 ceph osd tree可以檢視...