前往
大廳
主題

ZeroJudge - g275: 1. 七言對聯 解題心得

Not In My Back Yard | 2021-09-09 00:00:08 | 巴幣 0 | 人氣 896

題目連結:


題目大意:
輸入第一列給定一正整數 n(1 ≦ n ≦ 30),代表有 n 個對聯,每個對聯佔兩列輸入。接著的兩列輸入,每列給定七個整數(只會是 0 或是 1)代表七言對聯其中一句的平仄分布,0 代表平聲 、 1 代表仄聲。

而一個七言對聯有三條規則:
A: 二四不同二六同:每一句第二、四個字必須不同平仄,而第二、六個字必須相同平仄
B: 仄起平收:第一句的結尾必須為仄聲,第二句的結尾必須為平聲
C: 上下相對:第一、二句的第二、四、六個字平仄必須不同

請判斷每組對聯違反哪些規則,依字典序輸出違反的規則之編號(A 、 B 和 C)。如果都沒有違反則輸出「None」。



範例輸入:
範例輸入 #1
1
1 1 0 0 0 1 1
1 0 0 0 1 1 0

範例輸入 #2
1
0 1 1 0 1 1 1
1 0 1 1 0 0 0

範例輸入 #3
2
0 1 1 0 0 0 1
1 0 1 1 0 1 1
0 1 0 0 0 0 1
0 0 0 0 0 1 1


範例輸出:
範例輸出 #1
AC

範例輸出 #2
None

範例輸出 #3
AB
ABC


解題思維:
就是單純地按照題目定義的規則去判斷即可:
對於規則 A 即是當有任一句第二個數字與第四個數字相同(代表平仄相同)或是第二個數字與第六個數字不同,則違反此規則;
對於規則 B 即是當第一句第七個數字是 0 或是第二句第七個數字是 1,則違反此規則;
對於規則 C 即是當第一句第二或四或六個數字與第二句第二或四或六個數字相同,則違反此規則。

從 A ~ C 依序如上判斷,有違反就輸出相應的規則之代表字母。最終如果都沒有違反就輸出「None」。




此次分享到此為止,如有任何更加簡潔的想法或是有說明不清楚之地方,也煩請各位大大撥冗討論。

創作回應

相關創作

更多創作