入門級演算法

2021-08-07 06:24:33 字數 2670 閱讀 7922

今天我想記錄的是一些關於入門級別的演算法。

將乙個字串s對映為乙個整數,使得該整數可以唯一的代表字串s。

先假設字串均由大寫字母a~z構成,不妨設a~z為0~25,即將26個大寫字母對應到了二十六進製制中。按照將二十六進製制轉換為十進位制的思路,即可實現將字串對映為整數的需求。

題目:

給出n個字串(恰好由三位大寫字母組成),再給出m個查詢字串,問每個查詢字串再n個字串中出現的次數。

ps:直接將輸入的數字作為陣列的下標來對這個數的性質進行統計,這種做法很實用!n皇后問題:

在 乙個n*n的西洋棋棋盤上放置n個皇后,使得這n個皇后兩兩均不在同一行、同一列、同一條對角線上,求合法方案數。

解法:考慮到每行只能夠放置乙個皇后,每列也只能放置乙個皇后,所以如果將n列皇后所在的行號依次寫出,那將會是1~n的乙個全排列(遞迴全排列的應用),於是我們只需要檢查全排列中符合條件的方案數即可(對角線法則),使用count來記錄方案數。

給出n個開區間(x,y),從中選擇盡可能多的開區間,使得這些開區間兩兩沒有交集。

解法:首先對所有的區間以左端點從大到小排序,若左端點相等則右端點從小到大排序,然後依次進行判斷,統計不相交的區間個數

0;}ps:求解區間選點問題:給出n個閉區間【x,y】,求最少需要確定多少個點,才能夠使得每個閉區間中都至少存在乙個點。只需要將上述**中的i[i].y<=lastx,改為i[i].y

1、求出序列中等於x的元素的位置。

int binarysearch(int a,int

left,int

right,int x)

return -1;

}

2、求出序列中第乙個大於等於x 的元素的位置

int binarysearch(int a,int

left,int

right,int x)

return left;

}

3、求出序列中第乙個大於x 的元素的位置

int binarysearch(int a,int

left,int

right,int x)

return left;

}

小結
字串hash利用的是陣列下標的知識,遞迴求解n皇后,區間不相交以及二分問題,都是相對比較簡單的演算法,屬於入門級別的演算法,適合吾等小白的嘻嘻揣摩,當然最重要的還是打好堅實的基礎,這樣才有機會做出大大的房子!

PKI入門級介紹

隨著電子商務的迅速發展,資訊保安已成為焦點問題之一,尤其是網上支付和網路銀行對資訊保安的要求顯得更為突出。為了能在網際網路上開展安全的電子商務活動,公開金鑰基礎設施 pki,public key infrastructure 逐步在國內外得到廣泛應用。我們是否真的需要 pki pki 究竟有什麼用?...

PKI入門級介紹

隨著電子商務的迅速發展,資訊保安已成為焦點問題之一,尤其是網上支付和網路銀行對資訊保安的要求顯得更為突出。為了能在網際網路上開展安全的電子商務活動,公開金鑰基礎設施 pki,public key infrastructure 逐步在國內外得到廣泛應用。我們是否真的需要 pki pki 究竟有什麼用?...

走進Canvas 入門級

本文沒有太多理論知識,大部分都是通過案例來講解,因為我對canvas並未達到熟練的程度,只能做些基礎講解.id cvs width 1000 height 500 style border 1px solid black canvas 獲取標籤 var cvs document.getelement...