NC218767. 消消乐
描述
输入描述
第一行输入一个整数t, 代表测试数目。(1<=t<=20)
第二行输入三个正整数n (n <= 100) 、k(k <= 100)以及x (x <= k)。 分别代表珠子的总数目、珠子的颜色数
以及初始时所拥有的珠子的颜色。
第三行输入n个正整数C1,C2......Cn(Ci <= k )。
输出描述
每行输出一个整数代表最大能消除的珠子的数量
示例1
输入:
1 10 2 1 2 1 2 2 1 2 2 1 1 2
输出:
5
说明:
显然将颜色为1的珠子插在第8颗珠子的前面,珠子顺序变成2 1 2 2 1 2 2 2,消除3颗珠子C++ 解法, 执行用时: 4ms, 内存消耗: 304K, 提交时间: 2022-03-27 09:57:16
#include<iostream> using namespace std; int main() { int t; cin>>t; while(t--){ int n,k,x; cin>>n>>k>>x; int a[105],b[105],t,m=1,ans=0,maxans=0; for(int i=0;i<105;i++){ a[i]=0; b[i]=0; } cin>>a[1]; b[1]=1; for(int i=2;i<=n;i++){ cin>>t; if(t==a[m]) b[m]++; else { m++; a[m]=t; b[m]=1; } } for(int i=1;i<=m;i++){ if(a[i]==x&&b[i]==2){ ans=2; int p=1,l=1; while(l){ if(a[i-p]==a[i+p]&&b[i-p]+b[i+p]>=3){ ans+=b[i-p]+b[i+p]; p++; } else{ l=0; } } } if(ans>maxans)maxans=ans; } cout<<maxans<<endl; } return 0; }