PAT乙級1027 列印沙漏 (Cpp)

2021-09-13 03:20:57 字數 1191 閱讀 1211

1027 列印沙漏 (20 分)

本題要求你寫個程式把給定的符號列印成沙漏的形狀。例如給定17個「*」,要求按下列格式列印

*****

**** ***

*****

所謂「沙漏形狀」,是指每行輸出奇數個符號;各行符號中心對齊;相鄰兩行符號數差2;符號數先從大到小順序遞減到1,再從小到大順序遞增;首尾符號數相等。

給定任意n個符號,不一定能正好組成乙個沙漏。要求列印出的沙漏能用掉盡可能多的符號。

輸入在一行給出1個正整數n(≤1000)和乙個符號,中間以空格分隔。

首先列印出由給定符號組成的最大的沙漏形狀,最後在一行中輸出剩下沒用掉的符號數。

19 *
*****

**** ***

*****

2

說來慚愧,這道題前後做了三遍才做出答案,而且並非一次ac,其間過程不可謂不曲折 。

**如下,想說的都在注釋裡了:

#include #include using namespace std;

int main()

count -= 2; //當前count比實際count多2,故此處需減2

n = (count + 1) / 2;

need = (count * (count + 1)) / 2 + (count + 1) / 2 - 1;

re = sum - need;

int len = 2 * n - 1;

//迴圈巢狀輸出沙漏

for (int i = n; i >= -n; i--)

printf("\n");

} printf("%d", re);

return 0;

}

第一次提交時測試點0和4顯示格式錯誤,看了網上博主的提示才知道末尾不應顯示空格,具體見下圖(左圖為錯誤**,右圖為正確**ps.為方便觀察,圖中用.代替空格

PAT 乙級 1027 列印沙漏

時間限制 200 ms 記憶體限制 65536 kb 長度限制 8000 b 判題程式 standard 作者 chen,yue 本題要求你寫個程式把給定的符號列印成沙漏的形狀。例如給定17個 要求按下列格式列印 所謂 沙漏形狀 是指每行輸出奇數個符號 各行符號中心對齊 相鄰兩行符號數差2 符號數先...

PAT 乙級 1027 列印沙漏

本題要求你寫個程式把給定的符號列印成沙漏的形狀。例如給定17個 要求按下列格式列印 所謂 沙漏形狀 是指每行輸出奇數個符號 各行符號中心對齊 相鄰兩行符號數差2 符號數先從大到小順序遞減到1,再從小到大順序遞增 首尾符號數相等。給定任意n個符號,不一定能正好組成乙個沙漏。要求列印出的沙漏能用掉盡可能...

PAT乙級1027 列印沙漏

首先想吐糟一下這個題,我還沒有考慮符號數小於七個的情況就ac了 思路很簡單 1.它給了乙個數,我們組成圖形的數目是固定的,而且滿足1 3x2 5x2 7x2的規律,那麼我們就可以計算出剩下的符號數。for迴圈找最大滿足組成圖形的符號數 2.根據最大滿足條件的符號數,我們就能畫出圖形。1.畫的時候分三...