咱們知道,詞都是按照詞牌來填的,上帝爲了考驗小杉,只給了他四種詞牌,但只要壓韻就算符合詞牌。小杉已經想好了N個意境優美的句子,每一個句子都有一個韻腳。符合要求的詞的句式應當有以下四種" XXYY" ," XYXY" ," XYYX" ," XXXX" ,其中X或Y表示韻腳。如今小杉想知道,從他想的N個句子之中,最多能按順序挑選出幾首符合條件的詞。而且詞的句子間不能交錯,好比你選了1 4 6 8作爲一首詩,那麼7你就不能再選了。ios
第二行有N個不超過10^4的正整數,第i個整數表示第i個句子的韻腳,整數相同表示韻腳相同c++
30%的數據 N<=100.N數組
12 1 2 4 2 3 1 2 2 1 1 2 2
2
【解題思路】
將此題進行解析,N個句子每一個用一個整數表明,即一個整數表示一個句子中的韻腳。如題中所說只要符合四種詞牌就算押韻,即只要N個數字中有兩個
整數知足上述四種句式就知足一首詞。
例
兩個數字分別爲1 和 2
1122 2211 1212 2121 1221 2112 1111 2222都知足四種句式,即都符合詩詞的要求。
思路轉化爲 ====》求一個含有四個整數的數組,若是存在倆對元素相等知足四種句式。
可是題中還提到,句子不能交錯,若是選擇1 4 6 8 位置上的句子,那麼2 3 5 7 位置上的數字就不能在選擇了。
【代碼實現(c++)】
1 #include <iostream> 2 using namespace std; 3 int n; 4 int A[4001]; 5 int main() 6 { 7 int c=0,a,b,sum = 0; 8 cin>>n; 9 for(int i = 0;i<n;i++) 10 cin>>A[i]; 11 int temp = 0; 12 for(int i = 0;i<n;i++) 13 { 14 for(int j = temp;j<i;j++) 15 { 16 if(A[i] == A[j]) 17 { 18 c++; 19 A[i] = A[j] = -1; 20 break; 21 } 22 } 23 if(c==2) 24 sum++,c=0,temp = i; 25 } 26 cout<<sum<<endl; 27 return 0; 28 }