今天看到乙個題目是這樣出的,有個15公升和27公升的容器,問可以向桶裡倒入多少公升的水?
首先看: 27-15=12公升
27-3=24公升
24-15=9公升
24+9=33公升
看來我選對了,具體做法是,將27公升杯中倒滿15公升,剩12公升水,將12公升水倒入15公升杯,那麼15公升杯還差3公升水滿。將27公升杯裝滿倒滿15公升杯,那麼27公升杯中剩
24公升水,將這24公升水倒滿乙個15公升的杯,則剩9公升水,將9公升水倒入桶裡,以同樣的方法,可以獲得24公升水,倒入桶後,就得到了33公升的水。
再有另一道題:
求最長子序列的長度的演算法的複雜度:
演算法:此題為動態規劃經典題目,時間複雜度o(n^2)。
解法如下:
設原陣列為a[1....n]。設一陣列d[1....n],其中d[i]表示從第i個元素開始(一定
包含第i個元素),到整個陣列末尾的子串行 a[i...n]中的最長遞減子串行的長度。
則本問題就是要在求出d[1]的同時,恢復出最優解。
下面給出遞推式:
d[i]的值分兩種情況:
1、當i=n時,d[i]=1。即最後乙個元素的序列的最大遞減子串行中只有它自己。
2、當ia[k]} +1。解釋意思為,包含第i個
元素的序列a[i...n]的最大子串行依賴於i後面所有的序列中比a[i]小(滿足遞減
特性),且最大的d[k](滿足最 優特性)值再加1(加上a[i]元素)。在給d[i]賦
值的時候只需記錄p[i]=k,既可以作為parent屬性恢復出解。
具體實現的話,開兩個陣列d[n],p[n],外層迴圈從後往前選取i,內層迴圈從i往
後尋找最優的k,雙迴圈遍歷即可求出所有的d[i]。然後 再進行一次o(n)操作,找
出最大的d[max]。恢復解的話,可以從p[max]開始,依次恢復出各個解。
需要乙個陣列空間來記錄,包含當前位置到陣列末尾這段數字中,包含此位置的最長子序列的長度。
前乙個位置的記錄依賴於其後面所有位置啟記錄的結果。因而時間複雜度為o(n*(n+1)/2)+o(n) , 即為o(n^2),空間複雜度為o(n).
看來我錯了哦。
再一題是這樣的:乙個耙有5環,射擊時,得到的分數從1到5環的得分為9,7,5,3,1.乙個人射擊6次,得到28分,問這個人得分的組合有多少種?
感覺原題目讓人產生誤解,故改了下。
28/6=4+2/3=14/3
射擊6次,得分的平均為4點多,3分低於平均分5/3,1分低於平均分11/3. 5-14/3=1/3. 7-14/3=7/3 9-14/3=13/3
需要-5/3,-11/3,1/3,7/3,13/3中可重複選擇6次加起來的和為0.
簡化下,去掉分母為-5,-11,1,7,13.
這樣依然不很明朗啊!窮舉吧:-11最多出現3次,-5最多出現4次,那麼-11與-5的組合有-10,-15,-20,-25,-30,-11,-16,-21,-22,-31,-32,-33,-26,-27
分別驗證每個數:-20,-11=7+1+1+1+1,-5-11=1+13+1+1,-5-5-11=1+7+13,-11-11=7+13+1+1,-27=-11-11-5=7+7+13總計6種。
這樣做有問題吧? 選項中沒有這個項啊!
9+7+5+3+1+3=28,1+1+9+9+5+3,1+1+1+9+9+7=28,
3+3+3+9+5+5=28, 3+3+1+9+7+5=28,3+3+3+3+9=28.
不知道解決這個問題還有沒有更好的辦法沒有,有待以後進一步研究。
波蘭式又稱中綴式逆波蘭式又稱字尾式
還有乙個字首式
中綴式:
根據算符間的優先關係來確定運算的次序,此外,還應顧及括號規則
如 (a+b)*(c+d) =
運算法則符合我們正常的運算規律
字尾式是有中綴式所得
如 ab+cd+*
運算法則,從從左到右依次進棧,遇見字母入棧,遇見運算子,將前兩個字母彈出,進行運算子計算後,將值在入棧,重複此過程
a入棧,b入棧,遇到+,a、b彈出,(a+b)入棧,c入棧,d入棧,遇見+,c、d彈出,(c+d)入棧,遇見*,(a+b)、(c+d)彈出,(a+b)*(c+d)入棧,最終棧裡面的只有乙個元素,該元素的值就為計算結果
字首式:就是字尾式的逆序
即*+dc+ba
從右到左依次入棧,只是跟字尾式入棧方向相反,過程相同
有意義的開始
今天真的是很值得紀念的一天,來深圳第一次過得這麼充實。原因很簡單有希望 有盼頭 第一次主動約mm出去玩 好像不是約會,是兩位兄弟幫忙約的,呵呵,再次感謝兩位好兄弟的幫助 值得紀念。一直比較膽小,尤其是現在這種處境,完全沒有什麼信心,自己真是太膽小了,總是想著兩位兄弟幫忙打頭陣,為自己鋪路,好像不大好...
有意義的編碼
現象描述 使用有意義的編碼作為一條記錄的id,甚至作為資料庫的主鍵存在,例如,乙個員工的編碼設定為0203004,其中02代表員工所在分公司,03代表員工所在部門,004代表員工進入到該部門的序號。原因分析 id的設定方式大概有以下幾種,一種是純粹的流水號,從1開始,每次加1,或者對其將以改進,將數...
Clean Code 有意義的名字
最近在看clean code 整潔之道 裡面有些內容還是不錯的,所以給大家分享下。意思是說名稱和意思要一致,更精確的說應該是看到名字就能想到意思。對程式設計師來說取名通常是一件麻煩的事情,尤其是取乙個好的名字。這裡擷取一段書中的 public list getthem return list1 這段...