[编程题] 彩色瓷砖
时间限制:1秒
空间限制:32768K
牛牛喜欢彩色的东西,尤其是彩色的瓷砖。牛牛的房间内铺有L块正方形瓷砖。每块砖的颜色有四种可能:红、绿、蓝、黄。给定一个字符串S, 如果S的第i个字符是’R’, ‘G’, ‘B’或’Y’,那么第i块瓷砖的颜色就分别是红、绿、蓝或者黄。
牛牛决定换掉一些瓷砖的颜色,使得相邻两块瓷砖的颜色均不相同。请帮牛牛计算他最少需要换掉的瓷砖数量。

输入描述:
输入包括一行,一个字符串S,字符串长度length(1 ≤ length ≤ 10),字符串中每个字符串都是’R’, ‘G’, ‘B’或者’Y’。
输出描述:
输出一个整数,表示牛牛最少需要换掉的瓷砖数量

输入例子1:
RRRRRR
输出例子1:
3

思路(牛客讨论区答案):
两两判断,碰到相同的直接替换就可以,因为有四块砖,保证替换的那块跟它的前面和后面都不相同就可以,所以
一定可以找到一个与前面不同同时与后面不同的替换,因此可以直接替换。
对字符串进行两两判断,找到相邻两个相同的,就将计数器加一,然后直接跳过这两个,从下一个开始判断,就是两两判断
代码:

#include <iostream>
#include <string>
using namespace std;
int main()
{string str;getline(cin,str,'\n');int k = 0;string tmp;string tmp0;for(int i=0;i<str.length()-1;i++){tmp = str[i];tmp0 = str[i+1];if(tmp == tmp0){k++;i++;}}cout<<k<<endl;return0;
}

手撕(dfs):

#include<string>
#include<iostream>
#include<map>
using namespace std;
static char tb[]={'R','G','B','Y'};
map<char,int>mp;
void myDfs(string& str,int beg,int& res,int res1,int pre){if(beg==str.size()){if(res>res1){res=res1;}return;}int cur=mp[str[beg]];if(pre!=cur)myDfs(str,beg+1,res,res1,cur);    for(int i=0;i<4;++i){if(i==pre||i==cur)continue;str[beg]=tb[i];myDfs(str,beg+1,res,res1+1,i);str[beg]=tb[cur];}
}

测试:

int main(){mp['R']=0;mp['G']=1;mp['B']=2;mp['Y']=3;int res=0;string str;while(cin>>str){int res=str.size();        myDfs(str,0,res,0,-1);cout<<res<<endl;}return 0;
}

扩展:

1.瓷砖十字相邻颜色不同

2.九宫格

题目来源
https://www.nowcoder.com/test/5986669/summary

彩色瓷砖(横向相邻瓷砖颜色都不相同)相关推荐

  1. 瓷砖C语言,瓷砖界的“C位”,融系列你不得不知道的那些事!

    提起瓷砖你会想到什么?是光亮的地板还是蹭蹭发亮的墙壁.或者你根本就没有留意过瓷砖也不一定.瓷砖似乎总是包裹着"平凡"二字,但是却也正是这平凡,让人无法忽略. 安华瓷砖通过对传统东方 ...

  2. Linux系统文件名字体不同的颜色都代表什么

    Linux系统文件名字体不同的颜色都代表什么 2013-01-24     0个评论      作者:认准就去做 收藏  我要投稿 Linux系统文件名字体不同的颜色都代表什么 在Linux中,文件的 ...

  3. 计算机屏幕发蓝,电脑的颜色突然变成蓝色了,屏幕,什么颜色都和以

    公告: 为响应国家净网行动,部分内容已经删除,感谢读者理解. 话题:电脑的颜色突然变成蓝色了,屏幕,什么颜色都和以前电脑回答:重装显卡驱动试试. 参考回答:先确定是不是显示器的问题 换到其他主机上试一 ...

  4. PhotoShop彩色图片打印机只有四中颜色操作步骤:

    打印彩色图片打印机只有四中颜色操作步骤: 1.图片调成灰度模式: 2.建立色调分离模版选择4: 3.图片调整为CMYK模式: 4.调整魔棒工具: 5.用魔棒工具勾选第一个色调,建立新的图层-按住alt ...

  5. 每一种颜色都有其对应波长的色光吗?

    所谓颜色这只是一个定性的说法.严格意义上讲,颜色与频率不是一一对应的关系,频率可以定量,颜色不能定量,它们之间的关系是大致仿佛的关系.颜色的概念属于主观范畴,是人特有的,即便是人,对颜色的区分也有区别 ...

  6. Linux 文件颜色都代表什么文件

    Linux 文件颜色都代表什么文件 1.蓝色代表着目录. 2.绿色代表可执行文件和程序. 3.红色代表压缩文件. 4.浅蓝色代表链接文件. 5.灰色代表其他文件. 6.红色闪烁代表链接文件有问题了. ...

  7. 用计算机如何算瓷砖菱形加工,瓷砖菱形块怎么计算切图解

    瓷砖菱形块怎么计算切图解 &nbsp,宽除以1.13; 长除以1.13菱形贴要先算四边要多少三角板,对应两边的三角板要这样算; &nbsp,取整数; &nbsp: &n ...

  8. 用计算机如何算瓷砖菱形加工,瓷砖菱形怎么计算公式

    瓷砖菱形怎么计算公式 对角线长度乘以2 2021-05-30 112评论 收起评论 分享 瓷砖地板,家居装修,一起装修网,省心,省钱 瓷砖菱形怎么计算公式 对角线长度乘以2 3天前 装修吊顶菱形计算公 ...

  9. Python测试序列是否所有相邻元素之间都具有升序关系

    代码功能:测试给定序列中是否所有相邻元素都具有严格的升序关系,也就是每个元素都比相邻的后面元素小. 温馨提示 进入公众号,通过菜单"最新资源"==>"历史文章&qu ...

最新文章

  1. html实现动态多表单输入,提交多个动态添加的html表单
  2. python大数据搜索_python语言-用 Python 实现一个大数据搜索引擎
  3. 使用Flash读取COOKIE
  4. 简述机器指令与微指令之间的关系_《计算机组成原理》试卷B与参考答案
  5. mysql行转列sql函数_(转)行变列SQL语句(MSSQL) - jack - 博客园
  6. 零基础java学习笔记
  7. Scrapy实战之阳光热线问政平台
  8. 限制计算机网口权限,谁能上网我来定——控制软件的联网权限
  9. java 运算规则_java四则运算规则
  10. 【swap】swap使用过高的处理方法
  11. android service录音,android录音并上传至服务器
  12. MySQL与Oracle主键Query性能测试结果
  13. 基于高通芯片组的广和通FM150 5G模组GPS测试演示
  14. 一次kubenetes的rook-ceph创建pv失败的故障排查
  15. 取原始数组中的指定数据push新数组
  16. facade模式实例
  17. 工作多年,我对架构的一些理解
  18. Xilinx FPGA 配置之ICAP
  19. 笨鸟Linux学习连载之 - 万事开头难
  20. 乐高大颗粒作品16:跑步机

热门文章

  1. redis的lrange_redis lrange list命令简介
  2. iOS修改WebView的UserAgent
  3. 如何申请创建数据分析项目组合
  4. yum安装步骤(网络下载安装)
  5. 通过 iframe引用的vue文件之间的方法互调
  6. MongoDB详解(三)——MongoDB集群
  7. SQL__存储过程__创建
  8. vi编辑器和C语言基础
  9. 【01】OpenCV模块架构介绍+示例程序演示
  10. 【微信小程序】小程序显示弹窗时禁止下层的内容滚动|遮罩层滚动穿透