我是靠谱客的博主 缥缈冰棍,最近开发中收集的这篇文章主要介绍C. Nice Garland,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

题意:

  就是有一串灯分别颜色是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所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(46)

评论列表共有 0 条评论

立即
投稿
返回
顶部