fjnu 1964 龙珠游戏
来源:互联网 发布:徐宥箴 知乎 编辑:程序博客网 时间:2024/04/29 14:52
Description
如上图所示,在QQ龙珠游戏中,通过龙头射出珠子,将轨道中的珠子形成同色三个或以上(含射出的珠子)相连的状态而消去这些同色的珠子。如果没有消去珠子,则在相应的位置插入射出的珠子。注意珠子的消去动作是由同色珠子的碰撞诱发的,中间的珠子被消去后两边的珠子向中间靠拢也会产生碰撞。若没有碰撞动作,就算三个或以上的珠子同色相连也不会有消去产生。
示例:
珠子序列为:
AABBAA
对中间的BB射出B,形成:
AABBBAA
符合消去条件消去BBB:
AA***AA
此时两旁的AA向中间靠拢形成:
AAAA
符合消去条件,第二次消去发生,珠子全部被消去。
现由龙头射出一个给定颜色的珠子,如何消去最多的珠子?
Input
第一行为一个正整数n (0<n<100),表示下面有n个测试用例。每个测试用例由两行组成,其中第一行为一个由大写字母组成的长度小于255的字符串,表示珠子序列,另一行只含一个大写字符,表示要发射的珠子。(一个字母代表一个珠子,字母相同则珠子颜色相同)
Output
对应每个测试用例输出一行,含一个正整数,表示最多消去的珠子数目(计数时含射出的珠子)。
Sample Input
1CABBAACB
Sample Output
6
Source
福建师范大学第五届程序设计竞赛
KEY:这题开始我就把题目理解错了,亏我龙珠还打得那么好……后来想通了,要碰撞才有消去啊……我居然给忘了……搞死了……
Source:
#include<iostream>
using namespace std;
char str[300];
char c;
int count(char s[])
...{
int len=strlen(s);
int k;
int i,j;
char t;
int tmp=0,max=0;
for(k=0;k<len;k++)
...{
i=j=k;
t=c;
while(s[i]==c&&i>=0) i--;
while(s[j]==c&&j<len) j++;
if(j-i-1<=1) continue;
tmp=j-i-1+1;
while(i>=0&&j<=len-1)
...{
if(s[i]!=s[j]) break;
t=s[i];
while(s[i]==t&&i>=0) i--;
while(s[j]==t&&j<len) j++;
int x=j-i-1-(tmp-1);
if(x<=2) break;
else tmp+=x;
}
if(tmp>max) max=tmp;
}
return max;
}
int main()
...{
// freopen("fjnu_1964.in","r",stdin);
int N;
char s[300],tmp[10];
scanf("%d ",&N);
for(int i=1;i<=N;i++)
...{
scanf("%s %c ",str,&c);
strcpy(s,str);
cout<<count(s)<<endl;
}
return 0;
}
#include<iostream>
using namespace std;
char str[300];
char c;
int count(char s[])
...{
int len=strlen(s);
int k;
int i,j;
char t;
int tmp=0,max=0;
for(k=0;k<len;k++)
...{
i=j=k;
t=c;
while(s[i]==c&&i>=0) i--;
while(s[j]==c&&j<len) j++;
if(j-i-1<=1) continue;
tmp=j-i-1+1;
while(i>=0&&j<=len-1)
...{
if(s[i]!=s[j]) break;
t=s[i];
while(s[i]==t&&i>=0) i--;
while(s[j]==t&&j<len) j++;
int x=j-i-1-(tmp-1);
if(x<=2) break;
else tmp+=x;
}
if(tmp>max) max=tmp;
}
return max;
}
int main()
...{
// freopen("fjnu_1964.in","r",stdin);
int N;
char s[300],tmp[10];
scanf("%d ",&N);
for(int i=1;i<=N;i++)
...{
scanf("%s %c ",str,&c);
strcpy(s,str);
cout<<count(s)<<endl;
}
return 0;
}
- fjnu 1964 龙珠游戏
- fjnu 1732 约瑟夫游戏
- FJNU
- FJNU 2013 王子与公主的游戏_砝码问题
- FJNU字符串
- FJNU字符串
- fjnu 1772
- 龙珠游戏
- fjnu 1980 集合
- fjnu 1976 Elevator
- fjnu 1730 整型数组
- fjnu 1728 抓迷藏
- fjnu 1715 对称数
- fjnu 1733 统计单词
- fjnu 1937 Tudoku
- fjnu 1859 Golf
- fjnu 1532 Jolly Jumpers
- fjnu 1444 乒乓球
- IP协议 子网掩码
- fjnu 1711 马的路径
- Edubuntu 强劲功能截图
- 进入/退出过程指令
- [转载]再来一个较详细的排序算法及代码实例
- fjnu 1964 龙珠游戏
- ENTER和leave
- fjnu 1362 收集样本问题
- 多事之周
- 函数调用堆栈变化分析 - quanming1119的专栏 - CSDNBlog
- 深入浅出C#2008从入门到提高Step By Step(五)Windows应用程序常用控件类(4)-CheckBox
- Hello World
- fjnu 1342 等式问题
- fjnu 1193 Duplicate Words