HDU 2074 疊筐 一維陣列解法

2021-08-30 21:45:38 字數 1629 閱讀 9118

需要的時候,就把乙個個大小差一圈的筐疊上去,使得從上往下看時,邊筐花色交錯。這個工作現在要讓計算機來完成,得看你的了。

input:

輸入是乙個個的三元組,分別是,外筐尺寸n(n為滿足0output:

輸出疊在一起的筐圖案,中心花色與外筐花色字元從內層起交錯相疊,多筐相疊時,最外筐的角總是被打磨掉。疊筐與疊筐之間應有一行間隔。

sample input:

11 b a

5 @ w

sample output:

aaaaaaaaa  

abbbbbbbbba

abaaaaaaaba

ababbbbbaba

ababaaababa

abababababa

ababaaababa

ababbbbbaba

abaaaaaaaba

abbbbbbbbba

aaaaaaaaa  

@www@

@w@w@

@www@

上程式源**:

#include #include int main()

//對外框尺寸n進行分情況討論

if(n/2%2==0)

//讓ch2充滿整個陣列

for(i=0;i=n-i;j--)

p[j]=ch1;

for(k=0;k=n-i;j--)

p[j]=ch2;

for(k=0;k演算法解析:在讀題目描述的時候很有可能會一臉懵逼,完全不懂題目要幹什麼。但是請別慌,後面還有樣例,看完樣例的輸入輸出就能大概知道題目需要讓程式設計者做什麼了。除了看樣例理解題意,還要弄清楚三個地方,乙個是中心花色字元,乙個是外框花色字元,最重要的是外框尺寸。

根據題目給出的樣例,可以看出對於不同的外框尺寸圖案的最外層列印中心花色字元還是列印外框花色字元的情況是不同的,外框尺寸n=11的時候最外層列印了外框花色字元,而n=5的時候最外層列印了中心花色字元。這就需要我們對外框尺寸n進行分類討論。分類的標準是n/2%2的值,也就是外框尺寸n除以2的商是奇數還是偶數,若是偶數,則交換字元ch1和字元ch2的值。最初對一維字元陣列p初始化的時候就將ch2賦值給p的每個元素,第一行列印的就全部是字元ch2(除去空格),而ch2到底是中心花色字元還是外框花色字元已經不重要了(已經根據n的分類進行了交換或者維持原樣)。剩下的上半截屏案的列印,則是根據行下標(0~n-1)是奇數還是偶數將依次縮小的對稱區間重新賦值(行下標為奇數賦為ch1偶數賦為ch2);而下半截屏案的列印,是根據行下標是奇數還是偶數將依次增大的對稱區間重新賦值(行下標為奇數賦為ch1偶數賦為ch2),直至尾行(不包括尾行)。尾行進行單獨判斷,先將p的首元素和尾元素置為空格,再將剩下的元素都賦值為ch2後輸出。

此外,還需要考慮外框尺寸為1的情況,此時直接列印中心花色字元後換行。

HDU 2074 疊筐(基礎字串處理)

本題是乙個字串處理畫圖題,很多人都把它歸為水題,的確思路不難,但是這題需要考慮的東西很多,例如 1 n 1的情況 2 四個角的處理 3 輸出與輸出之間的空行 include include include include include include include include define ...

hdu 杭電2074 疊筐

problem description 需要的時候,就把乙個個大小差一圈的筐疊上去,使得從上往下看時,邊筐花色交錯。這個工作現在要讓計算機來完成,得看你的了。input 輸入是乙個個的三元組,分別是,外筐尺寸n n為滿足0 output 輸出疊在一起的筐圖案,中心花色與外筐花色字元從內層起交錯相疊,...

0 1揹包問題(一維陣列解法)

0 1揹包問題 有n件物品和乙個容量為v的揹包。第i件物品的費用是c i 價值是w i 求解將哪些物品裝入揹包可使這些物品的費用總和不超過揹包容量,且價值總和最大。這個問題的特點是 每種物品只有一件,可以選擇放或者不放。演算法基本思想 利用動態規劃思想 子問題為 f i v 表示前i件物品恰放入乙個...