经典的三色旗问题

首先来看,什么是三色旗问题。

有一根绳子,上面有红、白、蓝三种颜色的旗子。绳子上旗子的颜色并没有顺序,现在要对旗子进行分类,按照蓝色、白色、红色的顺序排列。只能在绳子上进行移动,并且一次只能调换两面旗子,怎样移动才能使旗子移动的次数最少?

此为简述的三色旗问题。

这次,我们就来研究一下三色旗问题。

我们将它简单化。颜色什么的忽略。

我们将它理解为一个数组,有1,2,3;组成。且为无序的。

我们的任务就是将它按照前面均为1,紧接着为2,3,的数列。

当然解法有很多种。

比如说:多来几个数组,将它拆开。

再比如,我们记录各成分的个数。再分别输出。

在这里呢,我们讨论一种尽量简单,移动次数最少的算法。

那么,现在我们开始分析该算法。

我们定义三个变量,两个为0,一个为n-1;(假设数组长度为n)。

现在暂时将这三个变量分别称为n1,n2,n1;

其中n1=n2=0,n3=n-1;

我们我们用n1从头开始判断,如果为1的话,那么将n1,n2换位,同时n1,n2均向后移动一个单位(后面表示换位的均为其下标在数组中对应的元素换位。)

如果为2的话n1向后移动一位,n2不变。

如果是3的话,将n1和n3换位,同时n3向前移动一位,n1不变。

直至n1=n3时,说明排列完成。下面就是输出的问题了

怎么输出这里就不用多说了吧

下面我们看代码。

include

include

void arr(int a[],int n)//重排列函数

{

int i,k,l;

int x;//定义中间变量,用于交换

i=0,k=n-1;//赋初值

l=0;

while(l

Original: https://www.cnblogs.com/cndccm/p/12169446.html
Author: Mr小明同学
Title: 经典的三色旗问题

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/573044/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • windows下nginx安装、配置与使用

    目前国内各大门户网站已经部署了Nginx,如新浪、网易、腾讯等;国内几个重要的视频分享网站也部署了Nginx,如六房间、酷6等。新近发现Nginx 技术在国内日趋火热,越来越多的网…

    Java 2023年5月30日
    055
  • element-ui 提示框 确认按钮在左 取消按钮在右

    添加 //取消按钮 样式 cancelButto…

    Java 2023年6月9日
    072
  • webpack快速入门(三):资源管理

    上一章说了基本的webpack是用,包括命令行打包,npm脚本打包等基础的东西。 这篇说一下webpack的资源管理,包括(图片,字体,数据),首先调整一下项目结构成: webpa…

    Java 2023年6月16日
    0106
  • 腾讯云CentOS 6.6安装 Nginx

    一.下载Nginx 从Nginx的官网(http://nginx.org/en/download.html)下载Nginx的最新版本,这里我下载的是nginx-1.9.12。 下载…

    Java 2023年5月30日
    057
  • Spring 源码学习笔记11——Spring事务

    Spring事务是基于Spring Aop的&a…

    Java 2023年6月14日
    080
  • ElementUI多重条件、嵌套条件查询

    @ 前言 一、ElementUI如何通过选择的条件,进行公司(或产品等)的模糊查询+下拉框选择? 二、使用步骤 1.ElementUI代码 下单仓库、商品类别、开票单位都是通过se…

    Java 2023年6月13日
    079
  • MyBatis快速上手与知识点总结

    1、MyBatis概述 1.1 MyBatis概述 1.2 JDBC缺点 1.3 MyBatis优化 2、MyBatis快速入门 3、Mapper代理开发 3.1 Mapper代理…

    Java 2023年6月14日
    085
  • Mybatis mapper动态代理的原理详解(转)

    在开始动态代理的原理讲解以前,我们先看一下集成mybatis以后dao层不使用动态代理以及使用动态代理的两种实现方式,通过对比我们自己实现dao层接口以及mybatis动态代理可以…

    Java 2023年5月30日
    081
  • HDFS api操作

    2.获取FileSystem对象方式2 1 public void getFileSystem2() throws URISyntaxException, IOException …

    Java 2023年6月5日
    061
  • [学习笔记] Java字符和字符串

    在Java中,字符和字符串是两种不同的数据类型; 字符 (char) 是一种基本数据类型,用单引号’ 括起来; 一个char类型可以保存一个标准的ASCII字符或一个U…

    Java 2023年6月5日
    077
  • 策略模式在业务中的实际应用

    策略模式结构图 策略模式主要由以上三个身份组成,这里我们就不过多介绍策略模式的基础知识,默认大家已经对策略模式已经有了一个基础的认识。 业务需求 现有一个广告点击数据埋点上报的需求…

    Java 2023年6月5日
    078
  • java相关部分配置

    mybatis逆向工程、mybatis-plus代码生成器、swagger配置类、正则表达式、git.ignore忽略文件、SSM框架脚手架、Springboot数据库配置、web…

    Java 2023年6月9日
    074
  • SpringBoot + SpringCloud Hystrix 实现服务熔断

    什么是Hystrix 在分布式系统中,每个服务都可能会调用很多其他服务,被调用的那些服务就是依赖服务,有的时候某些依赖服务出现故障也是很常见的。Hystrix是Netflix公司开…

    Java 2023年5月30日
    084
  • 【转】Java的三种代理模式

    Java的三种代理模式 1.代理模式 代理(Proxy)是一种设计模式,提供了对目标对象另外的访问方式;即通过代理对象访问目标对象.这样做的好处是:可以在目标对象实现的基础上,增强…

    Java 2023年5月29日
    084
  • DMA 与零拷贝技术

    原文链接:DMA 与零拷贝技术 注意事项:除了 Direct I/O,与磁盘相关的文件读写操作都有使用到 page cache 技术。 1. 数据的四次拷贝与四次上下文切换 很多应…

    Java 2023年6月7日
    078
  • day04-1群聊功能

    多用户即时通讯系统04 4.编码实现03 4.5功能实现-群聊功能实现 4.5.1思路分析 群聊的实现思路和私聊的实现非常类似。 不同的是:私聊时,服务端接收到消息后,只需要找出接…

    Java 2023年6月15日
    077
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球