问题说明:
三色旗的问题最早由E.W.Dijkstra所提出,塔所使用的用语为Dutch Nation Flag(Dijkstra为荷兰人),而多数的作者则使用Three-Color Flag来说明。
假设有一条绳子,上面有红,白,蓝三种颜色的旗子,起初绳子上的旗子颜色并没有顺序,您希望将之分类,并排列蓝,白,红的顺序,要如何移动次数才会最少,注意您只能在绳子上进行这个动作,而且一次只能调换两个旗子。
import java.io.*;
public class ThreeColorsFlags {
private void swap(char[] flags, int x, int y) {
char temp;
temp = flags[x];
flags[x] = flags[y];
flags[y] = temp;
}
public String move(char[] flags) {
int wFlag = 0;
int bFlag = 0;
int rFlag = flags.length - 1;
while(wFlag <= rFlag) {
if(flags[wFlag] == 'W') {
wFlag++;
}
else if(flags[wFlag] == 'B') {
swap(flags, bFlag, wFlag);
bFlag++;
wFlag++;
}
else {
while(wFlag < rFlag && flags[rFlag] == 'R')
rFlag--;
swap(flags, rFlag, wFlag);
rFlag--;
}
}
return new String(flags);
}
public static void main(String[] args)
throws IOException {
BufferedReader buf;
buf = new BufferedReader(
new InputStreamReader(System.in));
System.out.print("输入三色旗顺序(ex. RWBBWRWR):");
String flags = buf.readLine();
ThreeColorsFlags threeColorsFlag = new ThreeColorsFlags();
flags = threeColorsFlag.move(
flags.toUpperCase().toCharArray());
System.out.println("移动顺序后:" + flags);
}
}
分享到:
相关推荐
以上就是Java经典算法中的几个问题的介绍和解决方案,包括费式数列、巴斯卡三角形以及三色旗问题。这些算法在编程竞赛和面试中经常出现,对于提升编程思维和问题解决能力非常有帮助。了解并掌握这些算法,可以帮助...
3. **三色棋 (ThreeColorFlags)** 三色棋问题是由E.W.Dijkstra提出的,目的是重新排列红、白、蓝三种颜色的旗子,使其按照特定顺序排列,每次只能交换相邻的两个旗子。Java实现如下: ```java import java.io.*; ...
3. 三色旗问题(Three-Color Flags) 这个问题源于E.W. Dijkstra,要求将连续排列的红色、白色和蓝色旗子分成三堆,分别只包含同一种颜色的旗子。Java实现时,通常采用分治策略: ```java public class ...
python教程学习
tdac034.pdf
veclibm111111111111
nssm工具,进行2次解压后即可
视讯镜头优化,操作不走
【数据结构】的资源,包括书籍、在线课程和网站
北京大学-DeepSeek系列-提示词工程和落地场景.pdf.png
【财信国际经济研究院-2025研报】2025年2月CPI和PPI数据点评:通胀低于预期,内需亟待提振.pdf
【毕业设计】java-springboot+vue精品在线试题库系统源码(完整前后端+mysql+说明文档+LunW).zip
python安装-25.求 a 的 b 次方——有点不好意思哈.py
代码实现了自适应IMM(交互式多模型)算法,专注于对目标状态进行估计,并结合了匀速(CV)和匀加速(CA)运动模型。它使用自适应观测噪声估计和扩展卡尔曼滤波器(EKF)作为滤波主体,并在最后提供误差统计特性输出。
中产品工业物联网联网的基础功能,是企业开启数字化转型的入门之选。它能帮助企业快速搭建起基础的设备数据采集与监控体系,以较低成本实
北京大学DeepSeek系列-DeepSeek与AIGC应用.pdf.png
【毕业设计-java】springboot-vue基于多维分类的知识管理系统实现源码(完整前后端+mysql+说明文档+LunW).zip
## 一、数据介绍 本数据参考C刊《管理评论》佟岩(2024)老师的做法,使用各年度省级政府工作报告中“减碳”关键词的词频总数来测度地方政府对“减碳”的重视程度,“减碳”关键词包括二氧化碳、低碳、减排、节能、能耗、环境保护(环保)、生态、绿色。 本数据包含:原始数据、参考文献、代码do文件、最终结果。 ## 二、参考文献: 佟岩,李鑫,徐国铨.企业集团碳减排压力与债务分布-来自高耗能上市公司的经验证据[J].管理评论,2024,36(02):210-221.DOI:10.14120/j.cnki.cn11-5057/f.2024.02.014 ## 三、相关数据:城市、城市编码、年份、减碳重视程度词频。
python教程学习
jfinal-undertow 用于开发、部署由 jfinal 开发的 web 项目