最近幾天忙著看指標和陣列的關係,把書翻了起來,不翻不要緊,一翻嚇一跳,本以為網上資源那麼豐富,不需要去翻書本,然而並不是這樣,網上講的很片面,書上的細節很多,需要靜下心來去慢慢啃。前幾天校園網故障,一直上不去網,於是也就無法寫部落格了,昨天來網了,而昨天又是藍橋杯校賽,於是就耽擱了寫部落格,最主要也是剛開始並不習慣寫部落格。
不說那麼多沒用的,既然昨天進行了藍橋杯校賽,那我們就來說說這個校賽,校賽一共五道題,前三道都不值一提,只有第
四、五道是難點,尤其是第四道,特別難搞,而第五道有簡單的思路,但是思路簡單了,程式設計就複雜了,目前還沒有想到什麼好辦法,而第四道,本身思路就麻煩,程式設計還難,細節問題太多,他究竟是什麼題呢,現在我們來看看。。。。。。
昨天的第四題,題本身看似很簡單,很容易理解,如下:
在一行輸入乙個n,然後在下方輸出乙個nxn資料方陣,如圖:
就這麼短短的一道題,難住了我,一次次分析演算法,最後終於想到了思路,可是沒有時間去寫細節**,因為太亂了,細節處可以說是毫無規章,總的來說是利用二維陣列,用了11個for迴圈,第乙個for迴圈,是用來迴圈固定tuxing[i][i](i < n/2),也就是確定每一圈數字迴圈的第乙個(左上角的那個數字,作為每一圈遞加的開始),後面接著是四個雙重for迴圈巢狀,把遞加的四種情況按照上半部從左至右依次遞加、右半部從上至下依次遞加、下半部從右至左依次遞加、左半部從下至上一次遞加的順訓編寫,保證每個迴圈頭尾相連,環環相扣,最後再跟乙個雙重for迴圈巢狀,依次輸出二維陣列的每個一資料,保證了資料的正常輸出,最後形成乙個回字型輸出方針,細節問題特別耐人尋味,需要特別斟酌。**如下:
#include
int main(int argc, const
char * argv)
for (i=0; i2; i++)
}for (j=n-1; j>n/2-0.5; j--)
}for (i=n-1; i>n/2-0.5; i--)
}for (j=0; j2-1; j++)
}for (i=0; ifor (j=0; jprintf("%d\t",tuxing[i][j]);
}printf("\n");
}return
0;}
此**在mac系統下的xcode編譯環境中試驗成功,但是在上面的規定範圍中,有一部分輸出結果會變形,不是正方形的存在,那是因為螢幕介面的影響,螢幕解析度和螢幕大小以及字型大小的原因,導致螢幕無法完整的按要求輸出成矩陣,一行無法表示n個資料,故會換行,這裡需要明確宣告,不是**的問題,是硬體設施的問題,假如螢幕足夠大,解析度足夠大,那麼別說n=100時的結果,縱使n=1000也可以照樣無誤輸出。
昨天,做出這道題我很激動,感覺自己對程式設計的細節問題有了新的理解更深入的理解,程式設計是一門藝術,很多時候需要遵守一些程式設計規範,這就好比,畢卡索的畫是現代派風格,這「現代派」就是他的規範,而他的內容是由他自己創作出來的,那是藝術。程式設計也是,很多細節問題需要我們人性化的去改變,去找到合適的方法,也許方法不止一種,但是每一種都是藝術,有些**也許是我們臆想的,根本和題沒有直接關係,但是他可以解決我們的問題,這就是程式設計的人性化,藝術化,並不是每個搞程式設計的人都會感覺程式設計是枯燥無味的,那是因為藝術從來就不是每個人都欣賞的了的,但是總有一些人懂得他的藝術。。。。。。
程式設計,努力去找多種程式設計方法,不把**搞的千篇一律;努力去優化自己的**,不讓**占用多餘的記憶體;努力去創造**,讓自己的**獨樹一幟……這就是我的程式設計藝術!
好了,廢話一籮筐,但是今天主要記錄的是自己對這道題的見解,希望可以對自己以後的程式設計道路有所幫助。
關於藍橋杯15屆校賽第五題 八皇后問題
昨天比較忙,所以部落格只能推遲到今天凌晨寫了,無奈,主要是想總結一下自己做這道題後的一些見解和一些疑惑。八皇后問題,是乙個古老而著名的問題,是回溯演算法的典型案例。該問題是國際西洋棋棋手馬克斯 貝瑟爾於1848年提出 在8 8格的西洋棋上擺放八個皇后,使其不能互相攻擊,即任意兩個皇后都不能處於同一行...
藍橋杯 第六屆校賽A組第四題
今有7對數字 兩個1,兩個2,兩個3,兩個7,把它們排成一行。要求,兩個1間有1個其它數字,兩個2間有2個其它數字,以此類推,兩個7之間有7個其它數字。如下就是乙個符合要求的排列 當然,如果把它倒過來,也是符合要求的。請你找出另一種符合要求的排列法,並且這個排列法是以74開頭的。注意 只填寫這個14...
藍橋杯第四屆個人賽
小明正看著 203879 這個數字發呆。原來,203879 203879 41566646641 這有什麼神奇呢?仔細觀察,203879 是個6位數,並且它的每個數字上的數字都是不同的,並且它平方後的所有數字上都不出現組成它自身的數字。具有這樣特點的6位數還有乙個,請你找出它!再歸納一下篩選要求 1...