经典的三色旗问题

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

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

此为简述的三色旗问题。

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

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

我们将它理解为一个数组,有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/711255/

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

(0)

大家都在看

  • HTML怎么设置图片大小

    html插入图片有两种方式:一种是通过标签插入的正常的图片,另一种是通过css样式插入的背景图片 1、首先你是通过第二种方式插入的是背景图片,直接用width和height只能控制…

    技术杂谈 2023年6月21日
    095
  • 【7】2022年9-10月

    9月23日-10月28日 从7月份以来右手臂频繁酸痛无力,一开始没重视以为是软组织的损伤导致的,所以只贴敷膏药进行缓解,9月以来,右手臂肿痛明显,开始出现变形,我意识到可能不是软组…

    技术杂谈 2023年7月10日
    075
  • 为vscode开发一款svn右键菜单扩展

    在我平时的工作中会经常用到svn blame这个命令,但是vscode现有的svn扩展普遍都不能自定义右键菜单。 所以我产生一个想法:自己动手为vscode开发一款svn的扩展来定…

    技术杂谈 2023年6月1日
    0104
  • 经验分享丨自学多久能达到挖漏洞的水平,漏洞奖金有多少?

    很多关注i春秋的朋友会在论坛、微博、知乎、今日头条等媒体平台点赞我们分享的技能知识,也会私信我们在学习过程中遇到的疑难问题,今天我们开设了春秋问答版块,定期来为大家答疑解惑,希望可…

    技术杂谈 2023年5月31日
    080
  • Linux Cgroup v1(中文翻译)(2):CPUSETS

    404. 抱歉,您访问的资源不存在。 可能是网址有误,或者对应的内容被删除,或者处于私有状态。 代码改变世界,联系邮箱 contact@cnblogs.com 园子的商业化努力-困…

    技术杂谈 2023年7月11日
    083
  • vim编辑器命令

    参考: https://blog.csdn.net/weixin_44191814/article/details/120091363 vim编辑器 ## Vim基本模式 【对文件…

    技术杂谈 2023年7月24日
    071
  • 单线程的Redis有哪些慢动作?

    前言 为什么 Redis 这么火? 键和值的保存形式? 为什么哈希表操作变慢了? 集合的操作效率? 有哪些数据结构? 不同操作的复杂度? 总结 现在一提到 Redis的第一反应就是…

    技术杂谈 2023年7月23日
    058
  • 绘图 Painter转接口封装的方式

    记录下思想 适用于业务逻辑相对单纯的一些画法,比如画背景(颜色,背景,边框等) 一个Draw方法中如果绘制比较复杂的话,就会导致代码混乱,而不灵活,每次需求更改就得重新画过,可重用…

    技术杂谈 2023年5月31日
    085
  • 带头结点的单链表

    与顺序表相同,链表也是一种线性表。与顺序表不同的是,链表的物理存储结构是用一组地址任意的存储单元存储数据。它不像顺序表那样需要占据一段地址连续存储空间,而是将存储单元分散在内存的任…

    技术杂谈 2023年7月25日
    065
  • Dapr 1.7 之 Unix Domain socket 他来了

    A UNIX socket is an inter-process communication mechanism that allows bidirectional data e…

    技术杂谈 2023年5月30日
    063
  • linux ftp报530 530 Login incorrect pam_unix(crond:account): expired password for user

    今天用FTP登录服务器,要传些数据文件,一直登录不上,重启之后依然无法登陆。 就提交了工单,阿里云的售后居然在网上给我找了两篇处理530的帮助文档,直接无语! 无奈… …

    技术杂谈 2023年6月21日
    0104
  • Day1 使用MarkDown

    二级标题 三级标题 Hello,world Hello,world Hello,world Hello,world java 分割线 超链接 A B VC https://imag…

    技术杂谈 2023年7月10日
    081
  • nodejs终端字符样式和进度条

    Nodejs为终端字符增加样式 只有黑白的色调对于比较复杂的命令行程序来说就显得太单调了,我们可以为命令行程序增加样式使得程序更加友好! 安装package: npm instal…

    技术杂谈 2023年5月31日
    097
  • 20212218林思凡Python技能树及CSDNMarkDown编辑器测评

    课程:《Python程序设计》 班级:2122 姓名:林思凡 学号:20212218 实验教师:王志强 实验日期:2022年4月17日 必修/选修:公选课 已在CSDN上发表文章,…

    技术杂谈 2023年7月24日
    068
  • Prometheus由于时间不同步导致数据不显示

    原文链接:Prometheus由于时间不同步导致数据不显示 问题 部署 prometheus 后,访问前端界面发现: 这是由于你windows机器与部署prometheus服务器的…

    技术杂谈 2023年7月25日
    092
  • Bash 脚本实例:获取符号链接的目标位置

    我们都熟悉 Linux 中的符号链接,通常称为符号链接或软链接,符号链接是指向任何文件系统中的另一个文件或目录的特定文件。 本文将介绍 Linux 中符号链接的基础知识,并创建一个…

    技术杂谈 2023年5月31日
    090
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球