華為程式設計決賽後的感想

2021-06-06 18:54:12 字數 1518 閱讀 6485

在得知比賽時間是8個小時後,感覺難度挺大的,這也許是我的又一次嘗試,又一次挑戰吧。比賽前,自己的心態很好,能寫多少就寫多少,盡全力吧,只要之後沒有多少遺憾就好。

看了試題後,感覺真的挺有難度,這次的題目跟俄羅斯方塊有點關係,就是在乙個21*21的矩陣中,任意給定乙個障礙物的位置,然後用俄羅斯方塊中的圖形去填充矩陣,填充的空間越多越好。我開始沒有思路,不知從何入手,2個小時過後,才有了一點眉目。

我先考慮一般情況,假設障礙物在中間,然後去填充它的周圍,使之形成乙個4*4的矩陣,然後在以它為中心,將它的上下左右用4*1或1*4的矩形圖形全部填滿,這樣的話,在21*21的矩陣中,就將剩餘沒有填充的分成4個部分(左上角,右上角,左下角,右下角)。以上就是第一步。第二步就是再填充剩餘的4個部分:我一右下角的一部分為例,先得到剩餘空間的大小,然後判斷得到乙個合適的矩陣,我當時想的是矩陣大一點較好,以4*4的矩陣最好,這樣我就可以用4個1*4的矩陣填充它,沒有的話,再判斷能不能形成4*3,4*2,4*1,3*4,3*3等這些矩陣,得到後,再用相應的矩陣圖形填充,填充後,剩下的未填充的部分就再分成三個部分,橫著的是一部分,豎著的是一部分,剩餘的(對角線)是一部分,這三部分都是矩陣,我再分別在這三個部分再次呼叫這個方法就行遞迴,感覺就可以了。

按照這個思路,我就開始寫程式,寫了一段時間後,感覺工作量有點大,但時間已經過去很多了,我感覺也沒有時間和心思來考慮有沒有改進的方法,還是就按照這個思路寫吧,到最後,除錯程式還是有問題,當時已經沒有時間了,沒有辦法,就把交了吧。走在回寢室的路上,雖然沒有做完,但感覺沒有什麼遺憾的,因為自己已經盡力了,有了思路,能寫的都寫了,只是時間不夠沒有寫完而已。

回到寢室後,細想了一下,感覺有更好的辦法。在第二步的時候,我為什麼不選取乙個2*2的矩陣呢,這樣的話,我就可以以它為基礎,先填充第一排,再依次填第二排-----------------,填完過後,我再判斷剩餘為填充的部分,用合適的圖形去填充,這樣就簡單多了。

想到這裡後,頓時感覺有點失落。為什麼會出現這樣的情況呢,我總結了一下。

1.在選取4*4矩陣時,沒有仔細分析選取它的原因,沒有考慮有沒有更好的,可能是定式思維,因為在第一步中,我選的是4*4的矩陣,在那種情況下,選它最好。所以在選方案時,每一步都還是要仔細分析一下,最好不要憑感覺。

2.可能是自己不太自信,在想好方案演算法後,沒有再去質疑過演算法的優劣,因為我當時不想將好不容易想到的演算法放棄,也不想在當時的情形下,給自己太多壓力,我害怕想不出其它的演算法。這也許是一種逃避吧,但這樣還是不行,在乙個不好的思路上花很多精力,很有可能是白做了。

3.也許是我想多了,受到了題目的誤導,題目說的是可以隨意選取俄羅斯方塊裡面的圖形,如果按照之後的演算法,那麼我選用的圖形就比較少,可以只用得上2*2,4*1和1*4的。而用之前的演算法,因為有3*3,3*2等圖形的選擇,那麼選用的圖形較多,所以當時感覺這樣的演算法還行,應該比較滿足題目要求,但這個的工作量跟上乙個演算法相比,工作量要大很多。題目的要求是盡量填充矩陣,不管選用那幾個圖形,那我為什麼不選2*2的呢,這樣比較容易實現。所以選方案時,還是要以簡單易用實現的方法為中心,只要滿足題目要求就行了。

過去後的就讓它過去吧,雖然感覺有點遺憾,也許這一次的遺憾是為了下一次不再有遺憾,就只能這樣安慰自己吧。

華為程式設計大賽決賽題

題目 俄羅斯方塊覆蓋。給定 乙個21 21的格仔矩陣,從1到441編號。輸入是乙個檔案testin.txt,裡面有4個數字,每乙個數字代表陣列下標,陣列元素值為1,表示障礙。空著的格仔用0表示。這四個數字代表的圖形只能是這個中的一種!也就是說。矩陣中4個1勾勒出個圖形只能是這兩種樣子。要求是用俄羅斯...

我的程式設計感想

2010年2月11日 it技術,學得多,忘的也多,學得快,忘得也快,進了這一行,似乎就有永遠學不完的知識,學得東西,似乎永遠跟不上別人開發的步伐。老鳥都知道,有問題就google或者baidu一下,這讓我們開發與解決問題的速度成倍的增加,可以說現在的網路就像是集大眾的智慧型於一身一樣的智者 這不得不...

關於結對程式設計的感想

上週老師給我們大家布置了乙個課堂作業 結對完成乙個四則運算的小程式。由於課上沒有帶筆記本,所以課上沒有完成,但也觀摩了其他同學的完成過程。結對完成專案要求的是兩個同學齊心協力地去完成專案,課後回到寢室,與室友去完成了這個作業,感觸還挺深的。拿到這個題目,首先我們對題目進行了分析,確定用什麼語言 什麼...