算法基础:求abc的全排列有几种方式
采用递归的方式,对abc的排列进行解析
先上代码块:

public class Demo2 {public static void main(String[] args){//toCharArray()将字符串对象中的字符转换为一个字符数组。char[] data = "ABC".toCharArray();f(data,0);}private static void f(char[] data, int k){//k当前位置的交换点(关注这个),与其后的元素进行交换 //d打印if(k==data.length) {for(int i = 0;i<data.length;i++) {System.out.print(data[i]+" ");}System.out.println();}for(int i = k;i<data.length;i++) {//试探{char t = data[k];data[k] = data[i];data[i] = t;}f(data, k+1);//回溯{char t = data[k];data[k] = data[i];data[i] = t;}}}
}

结果:
A B C
A C B
B A C
B C A
C B A
C A B
思路:
一般先把字符串转化成字符数组
然后采用不停交换的方法,对字符串中的字母不停的调换顺序:其中代码中的k是我们主要关注的交换点。是当前位置进行的交换点。与后面的其他元素进行挨个交换。交换完以后进行回溯,保证后面进行交换时开始的位置需要相同。
解析:
从0位置开始进行交换:进入f函数先判断if不符合则进入for循环:
下面用图解表示一下方法:![在这里插入图片描述](https://img-

这是最开始打印出 ABC,ACB的图解,整个第一次循环结束以后就开始进入i=1;k=0;进入AB之间的交换,剩下的交换都可以参照这张图解,其实就是i和k的值进行了变换。

算法基础2:求abc的全排列相关推荐

  1. 算法基础入门—求圆面积

    求圆面积 圆面积求法很简单:πr2 但对于新手须注意的是对于π的值不能取简单的3.1415926.例如.这题要求保留小数位后7位,π的值必须能保证面积后8位都是精确的值.π可以取PI=3.141592 ...

  2. 《算法基础》——2.3 求幂运算

    本节书摘来自华章计算机<算法基础>一书中的第2章,第2.3节,作者:(美)罗德·斯蒂芬斯(Rod Stephens)著,更多章节内容可以访问云栖社区"华章计算机"公众号 ...

  3. 全排列及相关扩展算法(一)——基础的回溯递归实现全排列算法

    1.全排列的定义和公式: 从n个数中选取m(m<=n)个数按照一定的顺序进行排成一个列,叫作从n个元素中取m个元素的一个排列.由排列的定义,显然不同的顺序是一个不同的排列.从n个元素中取m个元素 ...

  4. 【算法基础15】如何求约数?约数个数?约数之和?最大公约数?

    一.试除法求约数 主要思想:由于当n/a=b时,a和b都是n的约数,即约数总是成对出现,可以在一次循环中同时找到i和n/i两个约数,只需要循环n/i次就能找到所有约数. 例题:求一个数的所有约数,并将 ...

  5. 2023牛客寒假算法基础集训营5(通过ABCDHIKL) I题有详解(F已补)

    其他题待补中-- 链接:2023牛客寒假算法基础集训营5 简单题 A 小沙の好客(贪心,前缀和,二分) 题意思路 给定 n n n个商品的价值, q q q次询问,每次询问 k , x k, x k, ...

  6. 算法基础、算法比赛快速入门(java)

    想用Java快速入门算法?这篇文章你得看! 提示:本文章适合想要入门算法,并且想 "快速" 达到一定成果的同学们阅读~ 文章非常非常非常长(可能是你见过最长的算法基础篇章)!!! ...

  7. 2021牛客寒假算法基础集训营1

    2021牛客寒假算法基础集训营1 A. 串(线性DP) B. 括号(构造) E.三棱锥之刻(几何) F. 对答案一时爽(签到) I. 限制不互素对的排列(构造) J. 一群小青蛙呱蹦呱蹦呱 A. 串( ...

  8. 《Python程序设计与算法基础教程(第二版)》江红 余青松 全部章节的课后习题,上机实践,课后答案,案例研究

    (还在更新中-) 这篇博客花费了我的大量时间和精力,从创作到维护:若认可本篇博客,希望给一个点赞.收藏 并且,遇到了什么问题,请在评论区留言,我会及时回复的 这本书对Python的知识点的描述很详细, ...

  9. 第六章.数据结构与算法基础

    目录 第六章.数据结构与算法基础(重点) 第一节.数组与矩阵 数组 稀疏矩阵 第二节.数据结构的定义 第三节.线性表 链表详解 顺序存储与链式存储对比 队列与栈 第四节.广义表 第五节.树与二叉树 树 ...

最新文章

  1. 命令模式的优点?_一篇目录复习完设计模式
  2. Spring MVC modelandview
  3. 老司机教你将流量价值提升100倍
  4. hackme_Login As Admin 0
  5. 模拟消耗CPU之shell脚本
  6. java xor_java 简单xor加密
  7. java JFileChooser选择文件和保存文件
  8. venue11 Android,戴尔新平板四连发 抛弃WinRT回归Android
  9. A.2.5-输入年,月,判断本月有多少天?
  10. oracle euk 什么系统,【T】每日一生信--interproscan安装及使用(终结版)
  11. 国内趋于概念化的 “数据分析”在硅谷是怎样真正落地的?
  12. Android一键反编译工具 jadx
  13. go语言和区块链实战从基础到项目 go开发工程师教程视频 go区块链视频教程合集
  14. matlab飞机高度控制,基础知识 | 飞行中的各种高度(三)
  15. 一款批量修改AE模板的工具
  16. 第一章,用行列式解线性方程组,02-二阶与三阶行列式
  17. 记服务器数据库被攻击后修复经验
  18. 高考数学九大知识模块的易错考点【修正版】【知识体系辅导】
  19. 百家讲坛全集免费下载
  20. 滴滴在HBase性能与可用性上的探索与实践

热门文章

  1. 微信公众号H5页面跳转至app的某个页面,如果手机内没有app,则进入下载页面
  2. Microbiome | 海洋三所邵宗泽组揭示深海热液区病毒多样性及其与宿主相互作用
  3. 企业访问海外服的几种方式
  4. C语言猴子吃桃问题(两种方法)
  5. 笔记本电脑开启无线网络连接功能
  6. 二级日语词汇——副词
  7. d3d(Direct X)中的comptr技术详解
  8. FTPClient实现ftp的上传和下载
  9. CleanMyMac苹果电脑装机Mac系统清理应用
  10. 项目管理-团队管理的4个激励理论