标签:sample 美的 数字 color row play c++ 测试数据 正整数
我们知道,词都是按照词牌来填的,上帝为了考验小杉,只给了他四种词牌,但只要压韵就算符合词牌。小杉已经想好了N个意境优美的句子,每个句子都有一个韵脚。符合要求的词的句式应当有如下四种" XXYY" ," XYXY" ," XYYX" ," XXXX" ,其中X或Y表示韵脚。现在小杉想知道,从他想的N个句子之中,最多能按顺序挑选出几首符合条件的词。并且词的句子间不能交错,比如你选了1 4 6 8做为一首诗,那么7你就不能再选了。
第二行有N个不超过10^4的正整数,第i个整数表示第i个句子的韵脚,整数相同表示韵脚相同
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 }
标签:sample 美的 数字 color row play c++ 测试数据 正整数
原文地址:https://www.cnblogs.com/baixinyu/p/11823658.html