上帝的爱好
Posted baixinyu
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了上帝的爱好相关的知识,希望对你有一定的参考价值。
题目描述
我们知道,词都是按照词牌来填的,上帝为了考验小杉,只给了他四种词牌,但只要压韵就算符合词牌。小杉已经想好了N个意境优美的句子,每个句子都有一个韵脚。符合要求的词的句式应当有如下四种" XXYY" ," XYXY" ," XYYX" ," XXXX" ,其中X或Y表示韵脚。现在小杉想知道,从他想的N个句子之中,最多能按顺序挑选出几首符合条件的词。并且词的句子间不能交错,比如你选了1 4 6 8做为一首诗,那么7你就不能再选了。
输入数据
每组测试数据的第一行有一个数 N(N<=4000)。N
第二行有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 }
以上是关于上帝的爱好的主要内容,如果未能解决你的问题,请参考以下文章
宇宙为你所控?《Universe Sandbox》让你利用上帝视角创造宇宙!
[原创]java WEB学习笔记61:Struts2学习之路--通用标签 property,uri,param,set,push,if-else,itertor,sort,date,a标签等(代码片段