失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 1438 奥格瑞拉日常—考考你的记忆

1438 奥格瑞拉日常—考考你的记忆

时间:2018-12-22 16:07:07

相关推荐

1438 奥格瑞拉日常—考考你的记忆

描述

魔兽世界里面有一个很有趣的日常任务,不知道有没有人玩过,任务是这样的,有一个水晶在正中,他的四个方向各有一个颜色的水晶灯,分别是红黄蓝绿,现在该水晶会按照一个顺序依次触发N次水晶灯,即该水晶灯被点亮,你的任务就是,当水晶触发N次水晶灯结束后,你要按照你的记忆中的顺序自己去点一次水晶灯,如果中途有一个错误了,就重头开始,这个N在游戏中是从1开始逐渐增加到8的,也就是说你最长记忆需要记忆8个。

举个例子,水晶触发顺序是:红红黄红红;你的触发顺序也必须是红红黄红红才OK。

TS玩这个游戏玩了10天了(每天只能玩一次),现在他觉得很累,每次要背N多,不过他“发明”了一种简单的方法,他的方法如下:

如果触发的顺序是:黄黄黄红红绿红绿黄蓝

那么他记忆的方式是:2个黄2个红绿红绿黄蓝

即第一个不用记,剩下的部分如果连续的触发灯是相同的就记忆一个颜色和个数就OK,不用全记忆;

现在要求你用程序来实现这个扫描过程,并且反馈出记忆的信息,这里规定4个颜色用4个字母代替:红-R,黄-Y,蓝-B,绿-G。

比如现在的激发顺序是:RRRYYBGGRRBY

那么反馈的结果就应该是这样一个字符串:2R2YB2G2RBY

输入

输入第一行包含一个整数T,表示有T组数据,不超过1000组

以下每组数据包含两行,第一行包含一个整数N,不大于10,000,表示该字符串的大小,第二行包含一个字符串,包含不超过10,000个字符,并且仅包含RYBG四种字母。

输出

对于每组输入按照题目要求输出最终字符串,如果长度=1就输出一个空行。

样例输入212RRRYYBGGRRBY1R样例输出2R2YB2G2RBY

#include<iostream> #include<stdio.h> using namespace std; int main() { int t; scanf("%d",&t); while(t--) { int n,ans; char x; char last; char l; bool f; scanf("%d",&n); cin>>x; n--; if(n==0)printf("\n"); if(n>0) { scanf("%c",&last); ans=1; f=1; n--; while(n--) { f=1; scanf("%c",&l); if(l==last)ans++; else { if(ans==1)f=0; if(f) printf("%d""%c",ans,last); else printf("%c",last); ans=1; last=l; } } if(ans==1)f=0; if(f) printf("%d""%c\n",ans,last); else printf("%c\n",last); } } }

如果觉得《1438 奥格瑞拉日常—考考你的记忆》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。