即使是bug,當時令人印象深刻的bug也是會被忘記的
趁著稍還有些印象記錄下棒材匹配過程中碰到的一些問題
首先是對舊**的閱讀,由於其年代久遠能夠正常執行但是寫得比較混亂因此閱讀非常之枯燥困難,同時裡面不同情況下有過多重複**,主要表現在資料結構以及具體實現方法上有比較大的漏洞,因此將問題複雜化了。
但是演算法的思想是袮久可靠的,因此根據大致的演算法自己腦海有一些思路,再由師兄設計的資料結構,使用vector來儲存不需要進行增刪的資訊,使用list來儲存需要進行插入刪除更新的總資訊,從這裡也算是意識到,資料結構不是用來學學了解知道就好,而是在實際應用中要體現其價值,比如這裡,使用這樣的資料結構就是有師兄的效率以及實際情況的考慮的。
其次是對演算法的理解。在接收到任務後便開始埋頭苦幹,大致理解了思路並不等於抓住了貓。其實自己還有很多迷糊甚至錯誤的地方,但是自己沒有重視,匆忙下手去編寫**,然後在過程中不斷碰到問題,然後發覺自己的思路是錯誤的!這很致命,甚至是說前面的**都需要廢棄重寫!後來通過一些書籍的介紹,體會到先跑起來還是先分析問題清楚的優劣。但實際上,即使是先跑起來然後再在過程中不斷發現新的問題,也算是對問題的深入以及糾正,如果不能在需求階段就把問題分析清楚(其實也很難)那麼這種方法也是可行的,但是會走一些彎路,所以盡量把要做什麼、在做什麼、怎麼做、對不對思考好還是比較有利的,但也不能拘泥不前。
再有就是程式勉強能跑後要多次測試,不僅僅是一種情況下可以使用,還需要各種情況,各種時長都要合格才行。
於是就又暴露出了很多問題,甚至程式直接當掉。
原來就是程式中有各種問題沒有考慮全面,比如說:棒材匹配的交錯、指標移動越界、指標移動錯誤、某些flag標誌未設定或者清零等情況。當然其中用到了師兄寫的提取自己生成資料在圖上顯示的函式,可以直觀地對程式正確性進行觀察,這也告訴自己在查詢問題時候不要思維固話要懂得利用資訊來方便地進行觀察。
同時乙個函式僅僅是引數範圍不同,來執行多次,那麼在進行匹配插入等操作時候就會有不同的結果,比如第一輪是不會出現交叉匹配,但是第二輪就有可能,那麼允許其交錯匹配還是不允許呢。。。
最後根據師兄理解將資料結構的優劣進行了分析才了解自己寫得多差。自己在外層迴圈使用的是vector而內層迴圈使用的是list,這樣內層迴圈的效率就很低,而只要改變一下思路,其實是可以將內外反置的,同時這樣一來問題也簡化了,把同性質的問題提取出來,函式情況複雜度就下降了,再將可提取**獨立成小函式,更甚。
在這種情況下,後續的操作便有一定修改:允許交錯匹配,但是在匹配後進行排序,因此插入新節點時候都無需考慮前後,直接先再後面插入,最後一輪的排序就可以解決亂序問題。然後學到了list的sort方法可以自己設定排序規則,其實很簡單自己寫個函式就ok。
// 做排序
// pre:輸入,前面的乙個元素
// next:後面的乙個元素
// 返回:(pre.pos.x < next.pos.x);
bool dosort(barnode& pre, barnode& next)
// 根據barlist從x座標由低到高排序
// barlist:鍊錶
void barmatchfollower::barlistsort(barlist& barlist)
var url = "tajax_deal.aspx?u_msg=" + encodeuri(textmsg) + "&u_nick=" + encodeuri(textnick) + "&u_title=" + encodeuri(texttitle);
另外乙個是關於html當使用js控制一些效果比若滑鼠移動顯示隱藏一些資料,總莫名其妙地顯示混亂,也就是本來設定了幾個td用來分欄顯示資料但是在chrome下所有資料都集中到了第乙個td裡面。問enimo才曉得是要
function onmouseovertr(msgid)
NOIP2023年普級組試題 火材棒等式
給你n根火柴棍,你可以拼出多少個形如 a b c 的等式?等式中的a b c是用火柴棍拼出的整數 若該數非零,則最高位不能是0 用火柴棍拼數字0 9的拼法如圖所示 注意 加號與等號各自需要兩根火柴棍 如果a b,則a b c與b a c視為不同的等式 a b c 0 n根火柴棍必須全部用上 輸入檔案...
整理的一些Bug
前言 最近在學c 因為公司要求,以前從沒接觸過c 但是來到這個公司公司的人要我負責c 的乙個工程,所以沒辦法,學唄,難道不是很難,現在的學習環境也很好,直接就上專案,這樣學起來會很快,這篇部落格是將我所遇到的一些bug整理一下,以回顧回顧。1.無法顯示額外的 分析警告或錯誤 在使用vs2005編譯程...
解BUG的一些心得
目前,軟體 一直是程式設計師的夢魘,但其實只要掌握一定的技巧和基本知識,是可以輕鬆解決掉這些bug的。1 程式跑一段時間以後會越跑越慢。2 程式無緣無故crash。3 程式記憶體越變越大,直至程式crash。4 程式跑著突然死掉了。一 定位執行緒。以上解決問題的關鍵是先定位到程式變慢的 對於第1 4...