首页 > 试题广场 >

鸡鸭分类问题

[编程题]鸡鸭分类问题
  • 热度指数:9974 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
农场有n只鸡鸭排为一个队伍,鸡用“C”表示,鸭用“D”表示。当鸡鸭挨着时会产生矛盾。需要对所排的队伍进行调整,使鸡鸭各在一边。每次调整只能让相邻的鸡和鸭交换位置,现在需要尽快完成队伍调整,你需要计算出最少需要调整多少次可以让上述情况最少。例如:CCDCC->CCCDC->CCCCD这样就能使之前的两处鸡鸭相邻变为一处鸡鸭相邻,需要调整队形两次。


输入描述:
输入一个长度为N,且只包含C和D的非空字符串。


输出描述:
使得最后仅有一对鸡鸭相邻,最少的交换次数
示例1

输入

CCDCC

输出

2
头像 牛客题解官
发表于 2020-06-04 15:45:11
精华题解 题目难度:二星 考察点:字符串、模拟 方法:模拟 1.分析: 这个题的题意有点弯弯绕,我们来重新解读一下题意,给定一个只包含'C'和'D'的字符串s,问经过最少多少次移动之后,才能使得所有的'C'在一起,所有的'D'在一起,即将整个字符串s分为左右两部分,要么所有的'C'在字符串左 展开全文
头像 pandaRR
发表于 2019-08-08 11:05:50
思路 交换最后得到的结果只有两种,鸡左鸭右,鸭左鸡右 在代码中可以把‘C’都全移到左边或者把‘D’全移到左边,去最小者即可 代码 #include <iostream> #include <string> using namespace std; int main( 展开全文
头像 three_0430
发表于 2024-03-03 17:28:57
import java.util.*; // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { public static void main(String[] args) { Scanner in = new S 展开全文
头像 codewind
发表于 2020-05-26 14:36:50
//分析,鸡和鸭都向左边移动,选择小的,也就是看移动鸡 还是移动鸭子 import java.util.*; public class Main{ public static void main(String[] args) { Scanner sc = new Scanne 展开全文
头像 One___Day
发表于 2022-04-11 10:43:35
//招商银行真题,鸡鸭同笼问题 import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in 展开全文
头像 laglangyue
发表于 2020-05-31 20:41:50
从后往前冒泡交换,把'D'往后移 package org.niuke.solution38; import java.util.Scanner; public class Main { public static void main(String[] args){ Sca 展开全文
头像 ProQuo
发表于 2020-04-28 15:12:42
思路 交换结果只有两种,鸡左或鸡右,两种同时进行,取其中最小值输出即可 代码import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;public class Main 展开全文