解決字元的正方形輸出問題

2021-10-22 16:33:01 字數 1198 閱讀 9759

筆者認為:程式的核心是演算法,演算法的核心是問題中蘊含的規律。而找到最簡單的那一條,可以使程式更加簡單。

那現在我們來看一下題目:

題目要點為順時針輸出,而且是正方形。

由於輸出的不可逆性,所以我們確定必須是一行接一行來進行字元的輸出的。

順時針是比較容易的,我們只要確定輸出的陣列元素的下標就好了。

關鍵是正方形,還有陣列的長度並不滿足剛好為正方形的情況下我們想要在迴圈中輸出靠末尾的數字是毫無頭緒的。

對此我們必須對陣列進行割斷。通過觀察發現,滿足正方形的元素個數都是4的倍數。所以對於那些大於4的倍數或小於4的倍數的陣列總長度,我們將其除以4,賦值給十進位制的另乙個數c,然後將c再乘以4這樣就得到乙個長度為4的倍數的值d。然後以d為極限下標將舊陣列中不超過d的值都賦值給新陣列。這就是這個問題的核心規律了。

接下來就是空格數和輸出的行數(這裡指的是夾頂層和底層之間的**行)了。通過觀察很容易發現,輸出的行數是頂層的元素個數減去2。空格數的確定則是總的長度個數除以4再減去1。

核心問題解決了,剩下的就好辦了。

先實現**的第一行輸出。

第一行:順序輸出(沒什麼技術含量,懂的都懂)

第二行:輸出中間的**行,由兩個for迴圈實現。第乙個for迴圈籠罩著第二個for迴圈來確定輸出的行數。第二個for迴圈用來輸出空格使形狀看起來是正方形。

第三行:逆序輸出(還是沒什麼技術含量,注意這裡要接著左邊的豎著的那排的序號輸出

直接看**:

輸出結果:

總之:我們要清除的認識到:演算法是程式的核心,演算法的核心是規律。我們要發現規律,就要耐心去尋找。

此外:借用英雄聯盟裡無極劍聖的一句話:真正的大師,是永遠有一顆學徒的心!。

如有錯誤,歡迎指正。

C I O輸入輸出 輸出字元正方形

輸入乙個長度不超過50的由小字字母構成的字串,輸出由這個字串行構成的最大的正方形。由小寫字母構成的乙個字串。將字串圍成最大可能的正方形輸出,字串從正方形的左上方開始,按順時針方向繞行。aa ha ppabcdefghijklmnabcd l e k f jihg include include in...

正方形字串

題目描述 現請你輸出指定大小的 acm 字串。特別地,我們要求輸出的字串是正方形的 行數和列數相等 輸入輸入的第一行是乙個正整數n n 20 表示一共有n組資料,接著是n行資料,每行包含乙個正整數m m 50 表示一行內有m個 acm 相連。輸出 輸出指定的正方形字串。樣例輸入 212 樣例輸出 a...

輸出正方形旋轉擺花

題目描述 同學們弄來了不多於26種花,每種花有多盆。為使有限的鮮花擺放得更美觀,同學們決定把花擺成順時針正方形圖案。現在告訴你正方形的邊長n 每盆花的直徑為乙個單位長,1 n 1000 程式設計輸出花所排成的順時針旋轉正方形圖案 同大寫字母代表花 提醒,每個字母前有乙個空格。輸入 乙個整數n 輸出 ...