概述
题意:
就是有一串灯分别颜色是R,G,B。要求将每种颜色的灯相隔2个不同的灯。比如,RGR变成RGB才叫好看。
分析:
RGB有6种排列,分别是:"RGB", "RBG", "GBR", "GRB", "BGR", "BRG"。但是注意的是,两种之间的排列,肯定是不满足这样的情况的。
所以,怎样才能满足题目的要求呢?这样只有同样的情况才可以。也就是说RGRBGRRRG每个只能按照一个排列来进行更改。因为,把这样的字符串这样分三个改好后
其实就已经是好看的。也就是6种情况都进行暴力,然后比较大小。
#include<iostream>
#include<string> using namespace std; const int maxn = 2 * 1e5 + 10; string ss[6] = { "RGB", "RBG", "GBR", "GRB", "BGR", "BRG" }; int vis[6]; int main(){ char st[maxn]; int n; cin >> n; cin >> st; for (int j = 0; j < 6;++j) for (int i = 0; i < n; ++i){ if (st[i] != ss[j][i % 3]){ ++vis[j]; } } int minn = 0; for (int i = 0; i < 6; ++i){ if (vis[minn]>vis[i])minn = i; } cout << vis[minn] << endl; for (int i = 0; i < n; ++i){ cout << ss[minn][i % 3]; } cout << endl; }
转载于:https://www.cnblogs.com/ALINGMAOMAO/p/10319555.html
最后
以上就是缥缈冰棍为你收集整理的C. Nice Garland的全部内容,希望文章能够帮你解决C. Nice Garland所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复