求最長連續公用子序列和最長連續子字串

 問題的關鍵是如何定義子問題。 假設有: Xm = x1 x2 x3 ... xm Yn = y1 y2 y3 ... yn 1. 最長公用子序列(不必連續) 定義f(m, n)為Xm和Yn之間最長的子序列的長度 於是有f(m, 0) = f(0, m) = 0 如果xm != yn, 則f(m, n) = max{ f(m-1, n), f(m, n-1) } 如果xm = yn,則f(m, n) = f(m-1, n-1) + 1 問題歸結於求f(m, n)。依照公式用Bottom-up

動態顯示時間

方法一:<li id="localtime"></li> <script type="text/javascript">function showLocale(objD){var str,colorhead,colorfoot;var yy = objD.getYear();if(yy<1900) yy = yy+1900;var MM = objD.getMonth()+1;if(MM<10) MM = '0' + MM;var dd

作業系統小結

線程的引入是為了減少程式在並發執行時所付出的時空開銷,使os具有更好的並發性。線程和進程比較1)調度在傳統的os中,進程是資源分派的基本單位,也是一個能獨立運行和調度的基本單位。而在引入了線程的os中,進程仍然作為資源分派的基本單位,而獨立運行和調度的基本單位變成了線程,線程只擁有自己需要的少量資源即可工作。2)切換在引入了線程的os中,同一進程中,

2.3例題 校門外的樹

問題描述某校大門外長度為 L 的馬路上有一排樹,每兩棵相鄰的樹之間的間隔都是1 米。我們可以把馬路看成一個數軸,馬路的一端在數軸0 的位置,另一端在L

最長單調遞增子序列(二分尋找最佳化)

最佳化後,不需要再定義一個數組存放當前元素最長序列的長度,而是在輸入資料的同時進行最長序列的存放。 缺點:存放後的數組只是長度為最長序列的長度,但是元素的內容卻不是最長序列的內容,若需要記錄最長序列的排序,則需要另外一個數組用於記錄。 #include<iostream>#include<stdio.h>#include<algorithm>using namespace std;int data[100010];int main(){int n;while(

POJ-1700 過河問題【貪心】

題意:天黑後,N個人要過河,只有一個蠟燭且只有一條船,船每次最多坐2個人。不管怎樣,過河者(1個人或者2個人)都必須有蠟燭,所以過河後可能需要人返回送蠟燭,然後再繼續過河。問怎樣過河時間最短。思路:貪心思想(一般都是先排序)關鍵步驟:每次從此岸到彼岸移動的兩個人要麼這兩個人中有一個是最快的那個人,要麼這兩個人到達彼岸後再也不回來。即:要麼最快+最慢,要麼最慢+次慢。1.對N個人過河時間從小到大排序。speed[i]2.分情況討論:⑴當n = 1,直接過河。sum = speed[0](2)當n

刪數問題

題目描述:  鍵盤輸入一個高精度的正整數N(此整數中沒有‘0’),去掉其中任意S個數字後剩下的數字按原左右次序將組成一個新的正整數。編程對給定的N和S,尋找一種方案使得剩下的數字組成的新數最小。 輸出應包括所去掉的數位位置和組成的新的正整數。(N不超過240位) 範例輸入175438 4 範例輸出13 思路:(典型的貪心策略,方法就是從簡單入手,慢慢複雜。從n=1開始推導就會發現規律)現在假設有一個數,124682385,假如n = 1,則結果為12462385。n = 2,結果為1242385

3.2 相鄰數位基數不等比:skew數

問題定義: 在 skew binary表示中, 第 k 位的值 xk表示 xk.(2k+1-1)。每個位上的可能數字是 0 或1,最後面一個非零位可以是 2,例如, 10120(skew) = 1*(2^5-1) + 0*(2^4-1) + 1*(2^3-1)+ 2*(2^2-1)+ 0*(2^1-1) = 31 + 0 + 7 + 6 + 0 = 44.前十個 skew數是 0、1、2、10、11、12、20、100、101、以及 102。輸入資料輸入包含一行或多行,每行包含一個整數

Buffon投針(近似計算π)

問題定義:    如果地板的寬度是針的兩倍,則向地板投針,與地板縫隙相交的機率為1/π參考資料:http://www.hudong.com/wiki/Buffon%E6%8A%95%E9%92%88%E9%97%AE%E9%A2%98程式如下:#include<stdio.h>#include<ctime>#include<cstdlib>#include <math.h>// 設地板的寬度為2,針的長度為1void

多機調度問題

某工廠有n個獨立的作業,由m台相同的機器進行加工處理。作業i所需的加工時間為ti,任何作業在被處理時不能中斷,也不能進行拆分處理。現廠長請你給他寫一個程式:算出n個作業由m台機器加工處理的最短時間。 輸入第一行T(1<T<100)表示有T組測試資料。每組測試資料的第一行分別是整數n,m(1<=n<=10000,1<=m<=100),接下來的一行是n個整數ti(1<=t<=100)。輸出所需的最短時間 範例輸入22 21 56 32 5 13 15

Hdu-1166 敵兵布陣【線段樹(單點更新)】

題目連結:http://acm.hdu.edu.cn/showproblem.php?pid=1166解題思路:線段樹的入門題,可以用Google搜尋線段樹或者segment tree,理解後就可以了。我採用的是靜態建樹。代碼如下:#include<cstdio>#define lson l, m, root << 1#define rson m + 1, r, root << 1 | 1const int N = 50005;int segtree[N

獨木舟上的旅行

描述進行一次獨木舟的旅行活動,獨木舟可以在港口租到,並且之間沒有區別。一條船可坐多個乘客,但乘客的總重量不能超過獨木舟的最大承載量。我們要盡量減少這次活動中的花銷,所以要找出可以安置所有旅客的最少的獨木舟條數。現在請寫一個程式,讀入獨木舟的最大承載量、旅客數目和每位旅客的重量。根據給出的規則,計算要安置所有旅客必須的最少的獨木舟條數,並輸出結果。輸入第一行輸入s,表示測試資料的組數;每組資料的第一行包括兩個整數w,n,80<=w<=200,1<=n<=300,w為一條獨木

POJ-1456 Supermarket【貪心】

題目連結:http://poj.org/problem?id=1456題目大意:有N件商品,分別給出商品的價值和銷售的期限,只要在最後日期之前銷售處,就能得到相應的利潤,並且銷售該商品需要1天時間。問銷售的最大利潤。解題思路:1.我用的貪心的思想,將商品的價值從大到小排序,找到銷售的最大期限,用visit數組標記,如果它的期限沒有被佔用,就在該天銷售,如果佔用,則從它的前一天開始向前尋找有沒有閒置日期,如果有則佔用。這樣就可以得到最大銷售量。2.可以用並查集來做,將商品的價值從大到小排序,然後為

memset效率測試

    剛剛AC了一題,需要將數組部分初始化為零,為了簡單我就用memset將整個數組置零了,在我印象中memset函數的速度是快得驚人的,沒想到居然逾時了,讓我不得不重新審視memset的效率和我那想當然的愚昧。    初始化部分如下:#include<stdio.h>#define MAX 1000int ndata[ MAX ][ MAX ];int main(){char a[MAX];char b[MAX];int i , j;int nTemp = 10000;i =

一些好的編程習慣

1.盡量不要用立即數,而用#define定義成常量,以便以後修改。2.使用sizeof()宏,不直接使用變數所佔位元組數的數值。3.稍微複雜的運算式要積極使用括弧,以免優先順序理解上的混亂以及二義性。4.不很容易理解的運算式,要分寫成幾行5.嵌套的if

zoj 3019 Puzzle

 給你兩串數A,B,讓你隨意排列這些數使它們的最長公用子序列最長。 開始還以為是DP,後來覺得,這個真沒必要呀。 因為可以按任何安排,那麼只要知道這兩個序列中有多少個數是相同的就OK了,那 一定是最長的。  直接排序,兩個都排序,然後按順序尋找就Ok了。 代碼如下: #include <stdio.h>#include <stdlib.h>#include <iostream>#include <string.h>#include

Hdu-1754 I hate it【線段樹(單點更新)】

題目連結:http://acm.hdu.edu.cn/showproblem.php?pid=1754解題思路:依然線段樹水題。。。。。代碼如下:#include<cstdio>#include<algorithm>#include<cmath>using namespace std;#define lson l, m, root << 1#define rson m + 1, r, root << 1 | 1const int N =

HDU-1009 FatMouse’ Trade

題目連結:http://acm.hdu.edu.cn/showproblem.php?pid=1009題目大意:一隻老鼠有m個貓糧,倉庫有貓把守,給它想要的貓糧就成比例的給你javabean。問最多能得到多少貓糧。解題思路:這道題水的不能行,但是我卻弄了快1個小時。debug半天找不到錯誤去discuss,探索資料竟然有0.。。。也就是說貓不要貓食,直接可以把javabean全給你我了個去啊!我了個大去啊!!!!敢不敢不要這麼BT啊。。。。代碼如下:#include<iostream>

NYOJ博弈系列-取石子

如果步瞭解博弈,請先去看看基本的博弈知識。http://blog.csdn.net/niushuai666/article/details/6638943NYOJ上博弈類題目連結:http://acm.nyist.net/JudgeOnline/keysearch.php?key=%E5%8F%96%E7%9F%B3%E5%AD%90第一個:巴什博弈題目連結:http://acm.nyist.net/JudgeOnline/problem.php?pid=23解題思路:模板題。代碼如下:#inc

NYOJ-448 尋找最大數

題目連結:http://acm.nyist.net/JudgeOnline/problem.php?pid=448解題思路:類似貪心的演算法。對這個字串進行尋找,每次尋找最大值,尋找len-m次即可。但尋找的時候需要考慮尋找範圍,比如9222225,第一次查詢的時候只能查詢9到最後一個2這個範圍,因為要保持原序列,所以在尋找第i個字元的時候,後面必須還剩下m-i個字元不能尋找,這樣才能保證位元最大,因為不管什麼情況,位元多的數肯定大於位元小的數。那麼思路就明確了。迴圈len-m次就可完成任務,每

總頁數: 61357 1 .... 14315 14316 14317 14318 14319 .... 61357 Go to: 前往

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.