9.6例題:紅與黑

問題描述:有一間長方形的房子,地上鋪了紅色、黑色兩種顏色的正方形瓷磚。你站在其中一塊黑色的瓷磚上,只能向相鄰的黑色瓷磚移動。請寫一個程式,計算你總共能夠到達多少塊黑色的瓷磚。輸入資料包括多個資料集合。每個資料集合的第一行是兩個整數W和H,分別表示x方向和y方向瓷磚的數量。 W和H都不超過20。在接下來的H行中,每行包括W個字元。每個字元表示一塊瓷磚的顏色,規則如下1)‘.’:黑色的瓷磚; 2)‘#’:白色的瓷磚; 3)‘@’:黑色的瓷磚,並且你站在這塊瓷磚上。該字元在每個資料集合中唯一出現一次。

01背包另類詮釋

經典的01背包問題對於動態規劃,每個剛接觸的人都需要一段時間來理解,特別是第一次接觸的時候總是想不通為什麼這種方法可行,這篇文章就是為了協助大家理解動態規劃,並通過講解基本的01背包問題來引導讀者如何去思考動態規劃。本文力求通俗易懂,無異性,不讓讀者感到迷惑,引導讀者去思考,所以如果你在閱讀中發現有不通順的地方,讓你產生錯誤理解的地方,讓你難得讀懂的地方,請跟貼指出~----第一節----初識動態規劃--------經典的01背包問題是這樣的:有一個包和n個物品,包的容量為m,每個物品都有各自的

Hdu-2680 Choose the best route

題目連結:http://acm.hdu.edu.cn/showproblem.php?pid=2680題目大意:給你一個有向圖,一個起點集合,一個終點,求最短路。。。。解題思路:1.自己多加一個超級源點,把起點集合串連到超級源點上,然後將起點與超級源點的集合的路徑長度設為0,這樣就稱為一個n+1個點的單源最短路演算法。。。。。2.反向圖+終點的Dijkstra,然後記錄最小值。思路1的代碼如下:#include<iostream>#include<cstdio>#incl

輾轉相除法證明+最小公倍數證明+其他相關證明

輾轉相除演算法的簡介  在數論中,輾轉相除法(國際上一般稱為Euclidean Algorithm 或 Euclid's Algorithm,即歐幾裡得演算法)是一種求任意兩個歐幾裡得環(Euclidean Domain)中的單位(如:整數)的最大公約數的演算法。這個演算法的一個重要特點就是其不需要通過分解因式來求取最大公約數。輾轉相除法正因為其易操作性與易實現性而成為了電腦編程中的一個重要的求最大公約數的常用演算法。輾轉相除法的流程說明與應用  給出兩個自然數 a 和 b:檢查 b 是否為0;

xml複習筆記

 xml 注意事項1 有且僅有一個跟標記 應當以xml的聲明作為第一行2 空標記<lalor age="22" sex="male"/> "<"和標記名之間不應有空格3 標記名只能有字母數字底線,點組成,且只能以字母和底線開頭4 文本資料中不能有特殊字元,可以通過實體引用實現5 解析其不對段的內容做處理6 屬性命名規則和標記一樣,但必須用單引號或雙引號括起來7 注釋<!--簡單的xml檔案-->不能在聲明前面

NYOJ-422 字串和之差

題目連結:http://acm.nyist.net/JudgeOnline/problem.php?pid=422解題思路:這道題讀完題應該就知道是一道動態規劃題了,和做過的題類似的有一道求連續個數的最大值(有正,有負)。而這道題多了一個條件,是求絕對值,而且是最大值和最小值的絕對值。我的方法是開2個dp數組。dp[i]表示到第i個元素為止的最大值或者最小值,然後用max和min記錄最大值和最小值的絕對值,通過一次遍曆,就可以得到最大值和最小值。。但是有一點需要注意的就是最大值的產生可能是正數的

最長公用子序列(LCS)

輸入第一行給出一個整數N(0<N<100)表示待測資料群組數接下來每組資料兩行,分別為待測的兩組字串。每個字串長度不大於1000.輸出每組測試資料輸出一個整數,表示最長公用子序列長度。每組結果佔一行。範例輸入2asdfadfsd123abcabc123abc範例輸出36代碼如下:#include<cstdio>#include<string.h>#define max(a, b) a > b ? a : bint dp[1010][1010];char

百度招聘經驗

一面:給你一棵二叉樹,如何判斷它是否是完全二叉樹? 最開始我連完全二叉樹的定義都忘了,面試官提醒我之後我才明白是啥。。汗。我當時回答的是先把它轉化成數組的形式儲存(就是2*n存左孩子,2*n+1存右孩子的存法),然後迴圈判斷一下是不是所有的結點都是在數組的前m個位置。給你一個數組,求它的一個子串,使該子串的和最大。

4.4子串

問題定義:有一些由英文字元組成的大小寫敏感的字串。請寫一個程式,找到一個最長的字串x,使得:對於已經給出的字串中的任意一個y,x或者是y的子串、或者x中的字元反序之後得到的新字串是y的子串。輸入:輸入的第一行是一個整數t (1 <= t <= 10),t表示測試資料的數目。對於每一組測試資料,第一行是一個整數n (1 <= n <=

9.4遞迴例題:逆波蘭運算式

一直覺得遞迴還是很好理解的,看得懂,會用,原來我一直用的不夠熟練,還可以用得這麼巧妙啊。。。逆波蘭運算式是一種把運算子前置的算術運算式,例如普通的運算式 2 + 3的逆波蘭標記法為 + 2 3。逆波蘭運算式的優點是運算子之間不必有優先順序關係,也不必用括弧改變運算次序,例如(2 + 3) * 4的逆波蘭標記法為 * + 2 3 4。本題求解逆波蘭運算式的值,其中運算子包括 + -* /四個。輸入資料輸入為一行,其中運算子和運算數之間都用空格分隔,運算數是浮點數輸出要求輸出為一行,運算式的值。 1

HDU-2046 骨牌鋪方格【遞推】

題目連結:http://acm.hdu.edu.cn/showproblem.php?pid=2046解題思路:因為遞推這方面跟數學緊密相關,就看了一下相關方面的知識。這道題是一個簡單題,應該都能想出來。因為只能放1×2規格的骨牌,那麼,n規模的格子只能從n-1和n-2得來,n-1的時候我們增加一個2×1格子,豎著放,可以有f(n-1)种放法,n-2時候我們可以增加2×2個格子,2個都橫著放,可以有f(n-2)種方法。這題的思想和超級台階的思路一致,n狀態可以從n-1狀態和n-2狀態得來,所以可

括弧匹配(未完成)

寫了一個小時,想類比一下。結果考慮了很多地方,到最後還是有個地方無法解決,就是[(])]只需要添加一個[即可,但是我的卻無法判斷str[i]以後的字元,因為我的只能判斷str[i]以前的元素,在更新str[i+k]的時候,無法判斷str[i]是否可以通過改變str[i+k]達到更優。所以必須在判斷str[i]的時候看看前面已經最優的是否還有更優的解,即需要記憶化搜尋。應該只能用動態規劃吧。我的錯代碼如下:希望可以想出來解決方案吧。。。。。。#include<iostream>#inc

[演算法導論讀書筆記]Kruskal演算法

演算法思想:    把n個頂點看成看成n棵分離的樹(每棵樹只有一個頂點),每次選取可串連兩個分離樹中權值最小的邊把兩個分離的樹合成一個新的樹取代原來的兩個分離樹,如果重複n-1步後便得到最小產生樹。   Kruskal演算法適合於稀疏圖,如果用鄰接矩陣來表示圖,那麼按邊的權重排序也不好實現。虛擬碼:程式碼範例:#include <stdio.h>#include <stdlib.h>const int MAXN = 100;typedef struct{int x, y;

省賽小結

題目不難,拼的是代碼的熟練程度。A題,水題,zjf上去敲,1Y張國賓看的B,然後推了一個公式,zjf上去敲,敲好後測試發現是大數。然後我用JAVA敲了,提交WA。zgb說不會錯,可能是java提交格式不對,然後給判題發個資訊,說看比賽須知。但根本沒提這回事,扯淡。之後嘗試第二次提交發現B題不小心提交到F。。。。重新提交後2Y。我看的4題,一個類比題,暴力可搞,然後發現C是一個字串處理,讓zjf敲D,我去看C。結果zjf敲好後,我出了一組資料,他說沒考慮。。。。然後重新敲,我在旁邊看,然後我倆一頓

[編程珠璣讀書筆記]第一章代碼實現

用C++的bitset實現非常的方便:/*************位元影像排序演算法實現*************/#include <iostream>#include <bitset>#include <fstream>using namespace std;int main(){// 查看bitset的實現可知bitset是利用對unsigned long進行位元運算間接實現對位的儲存的//

[演算法導論讀書筆記]huffman編碼

        huffman編碼,大家都知道,不再過介紹。下面的程式只做練習,輸入任意長度的字元,自動用根據字元的出現次數進行編碼,可以看到,出現次數越多的字元,編碼長度越短,這也是huffman編碼的特點。需要注意的是,由於有些字元是不可列印的,或者列印出現看得不明顯的,輸出時輸出的是其ASSIC碼值。在linux下按ctrl+d結束輸入,windows下麼,我也不知道,自己google吧。#include <iostream>#include

NYOJ-522 Interval【樹狀數組】

題目連結:http://acm.nyist.net/JudgeOnline/problem.php?pid=522題目大意:給你M個區間,區間內所有整數個數+1,然後給出N個詢問,問k這個數字在所有區間中一共出現了幾次解題思路:當時第一思路就是裸的插線問點嘛,但是當時想著可能是水題,乾脆水過去算了。但是悲劇了。。於是用樹狀數組搞,結果悲劇的把WA看成TLE,以為看錯題目了?又YY了中方法來寫,總是TLE。最後無意間發現樹狀數組是WA啊。。。激動了一下瞬間知道是0的位置錯了,然後特殊處理了一下就過

[編程珠璣讀書筆記]最好的快速排序與庫函數中的排序函數比較

#include<iostream>#include<string.h>#include<stdio.h>#include<algorithm>using namespace std;const int MAX = 100000;void swap( int *data, int i, int j){int temp = data[i];data[i] = data[j];data[j] = temp;}void InsertSort3( int

NYOJ – 104 最大和【DP】

題目連結:http://acm.nyist.net/JudgeOnline/problem.php?pid=104解題思路:這個就是二維的最大連續和問題。我們可以通過轉化為一維的最大連續和來求解,方法就是用一個輔助數組temp。temp的作用就是將n行的矩陣壓縮為一行(累加求和),這樣就轉化為了一維的最大連續和問題。然後我們對從第i行開始的子矩陣進行枚舉即可。複雜度為O(N*N)代碼如下:#include<iostream>#include<cstdio>#include

學電腦的都是一群瘋子!!!!

學電腦的你們傷不起啊!!!!!!! 你們學得都是人說的語言啊!!!!!! 好歹有點腔調肢體環境神馬的做參考!!!!! 哥學得是電腦語言啊!!!!!! 電腦不會跟你點頭yes搖頭no啊!!!!! 它就會報一堆不知所云的錯誤啊!!!!有木有!!!!有時候啥都不報,直接崩潰啊!!!有木有!!! 法語德語數字難念!!!!! 你隨便找本演算法書啊!!!!!厚的跟《康熙字典》一樣啊!!!!有木有!!!!! 各種堆!!!棧!!!樹!!!!圖!!!! 說到樹就淚目啊!!!!光樹就分產生樹!!最小產生樹!!有向樹

總頁數: 61357 1 .... 14314 14315 14316 14317 14318 .... 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.