Scala写的排列组合

scala 方法大全(你必须掌握的百种方法!!!) –scala函数整合 – ++ 合并集合,并返回一个新的数组 var k = Array(1,2,3,"a") var e = Array("a","b","c") k++e 结果:Array(1,2,3,a,a,b,c)(新数组) – ++:并数组,结果由冒号右边类型决定 var d = List(1,2,3,4) var f = Array("a","b","c") d++:f 结果:Array(1, 2, 3, 4, a, b, c) f++:d 结果:List(a, b, c, 1, 2, 3, 阅读详情
package learn

import java.util

class pailiezuhe {

//获取组合数

  def getzuhe_num(n:Int,m:Int):Int={

    getpailie_num(n,m,0)/getpailie_num(m,m,0)

  }
  def swap(data:Array[String],i:Int,j:Int): Unit =
  {
    var temp = data(i)
    data(i)=data(j)
    data(j)=temp
  }

//输出所有组合可能
  def print_zuhe(data:Array[String],selected:Array[String],n:Int,index:Int): Unit ={

    if(index>=n)
      {
        selected.foreach(item=>print(item) )
        println()
      }
    else
      {

        for(i <- index to data.length-(n-index)){
            selected(index)=data(i)
            //
            print_zuhe(data,selected,n,i+1)

          }


      }

  }

 
  //全排列输出
  def print_pailie(data:Array[String],index:Int): Unit ={

    if(index>=data.length-1)
      {
        data.map(item => print(item))
        println("----")
      }
    else {

      for(i <- index  until  data.length){
          swap(data,index,i)
          print_pailie(data,index+1)
          swap(data,index,i)

        }

    }
  }

  //获取排列数
  def getpailie_num(n:Int,m:Int,index:Int):Int={
    /*
    n=4 m =2
    num = 4*3 = 12

    n=4 m =4
    num = 4*3*2*1

    n=4 m=3
    num = 4*3*2
    n*(n-1)*(n-2),
     */
    if(index==m)
      1
    else
    //index < m
    (n-index)*getpailie_num(n,m,index+1)


  }


}


object pailiezuhe{

  var pailiezuhe = new pailiezuhe

  def main(args:Array[String]): Unit =
  {

    println(pailiezuhe.getpailie_num(4,2,0))

    println(pailiezuhe.getzuhe_num(3,2))
/*
formatfa bin mxk
bin formatfa mxk
max forma bin
 */
    var arrayTest = Array("FormatFa","Bin","mxk")
    print("arrarLen:"+arrayTest.length)
    pailiezuhe.print_pailie(arrayTest,0)
    pailiezuhe.swap(arrayTest,0,2)
    print(arrayTest.map(item=>println(item)))


    var arrayTest2 = Array("1","2","3")
    var selected = new Array[String](arrayTest2.length)
    pailiezuhe.print_zuhe(arrayTest2,selected,3,0 )

    /*
    1,2,3,4
     */

  }


}

输出个别排序可以先获取组合,在输出每个的全排列

七个字母排列组合的小程序 今天 写了一个java小程序 是将a,b,c,d,e,f,g这7个字母的全排列打印出来,排除a,d相邻的情况 算然很简单 但是我用递归调用的方式写的 算法还是很不错的 建议新手们学习 看不懂或者有更好的想法的的请留言^_- 立即下载

相关推荐

OpenFOAM-多孔介质模型(porous media)

文章目录一、多孔介质(porous media)二、使用步骤1.达西定律2.Darcy-Forchheimer3.OpenFOAM fvOptions4.paraview动画每帧显示时间(Annotate Time)5.参考内容总结 一、多孔介质(porous media) 在流体力学中,流体流经多孔介质是指流体流经多孔介质时的行为方式,如海绵或木材,或使用沙子或其他多孔材料过滤水。 我们将展示如何设置多孔层,并使用OpenFOAM模拟流体通过该介质。 二、使用步骤 1.达西定律 达西定律最初是由达西通.

zq93538196的博客 9938

排列组合cn和an公式

排列组合cn和an公式? 排列的公式:A(n,m)=n×(n-1)...(n-m+1)=n!/(n-m)!(n为下标,m为上标,以下同)。 例如:A(4,2)=4!/2!=4*3=12。(考虑顺序,不考虑顺序则为6) 组合的公式:C(n,m)=P(n,m)/P(m,m) =n!/m!*(n-m)!。 例如:C(4,2)=4!/(2!*2!)=4*3/(2*1)=6。 作者:浣熊数学 链接:https://www.zhihu.com/question/26094736/answer/61071397

m0_50068884的博客 80万+

lvgl 实现表格table,并且固定表头

嵌入式实现table,lvgl 实现原生表格table组件

m0_61704502的博客 1271

Scala集合入门学习

遍历集合可以使用迭代器iterator的那套迭代方式。Seq是一个有先后次序的序列,比如数组或列表。IndexedSeq可以通过下标进行任意元素的访问。例如ArrrayBuffer。 Set是一组没有先后次序的值,在SortedSet中,元素以某种排过序的顺序被访问。 Map是一组(键,值)对偶,SortedMap按照键的顺序访问实体 Scala集合有三个基本操作: head 返回集合第一个元素...

GalenGao 487

DolphinScheduler工作流中ChunJun任务保存失败的深度解析与实战修复

本文深度解析了在DolphinScheduler工作流中创建ChunJun任务时遭遇“parameter invalid”保存失败的普遍问题。其根源在于前端表单的`customConfig`参数默认值与后端校验逻辑不匹配。文章提供了两种实战修复方案:一是修改前端源码并重新编译,二是热更新已部署的JS文件,并对比了其适用场景与风险,帮助用户彻底解决此集成障碍。

weixin_29010003的博客 397

YOLOv5实战:无人机巡检图片差异对比与违建标记(附完整代码)

本文详细介绍了如何利用YOLOv5目标检测技术实现无人机巡检图片差异对比与违建标记。通过图像对齐、目标检测、差异分析和可视化标记四个步骤,构建高效的违建识别系统,显著提升城市管理效率。文章包含完整代码实现和性能优化技巧,为计算机视觉在无人机巡检中的应用提供实用指南。

weixin_42535720的博客 282

Scala 数组 集合 函数大全

数组、集合函数 ++ 说明: 把两个数组或集合,合并成一个大集合,谁在左边合成大集合的时候,元素放在前面。 返回值: 返回值是一个数组或者集合,也可以是数组和集合合并,返回值谁在左边,返回值就是谁的类型。 代码演示: //创建两个数组 scala> var str1=Array(1,2,3) str1: Array[Int] = Array(1, 2, 3) scala> var str2=Array(4,5) str2: Array[Int] = Array(4, 5) //两个数组合并第

lyq7269的博客 1575

C#串口通信从入门到精通(27)——高速通信下解决数据处理慢的问题(20ms以内)

本文介绍如何在高速通信情况下解决串口接收的数据来不及处理的问题,由高级工程师多年经验总结而成,绝对是串口领域的实战经验!

qq_34059233的博客 6809

排列组合算法

排列组合算法 1。最近一直在考虑从m个数里面取n个数的算法。最容易理解的就是递归,但是其效率,实在不能使用。一直找寻中,今日得果2。算法来源与互联网组合算法     本程序的思路是开一个数组,其下标表示1到m个数,数组元素的值为1表示其下标     代表的数被选中,为0则没选中。       首先初始化,将数组前n个元素置1,表示第一个组合为前n个数。       然后从左到右扫描

todototry的专栏 6万+

【Burp入门第二篇】Chrome配置BurpSuite代理教程

1、配置Burp代理为127.0.0.1:80802、扩展商店添加插件switchyomega,修改服务器和端口为下图:3、打开代理,选择刚才添加的代理

等风来 8368

【YOLO】Mask Proto分支理解

Mask Proto分支通过解耦全局原型与实例参数,在保持YOLO实时性的同时实现精准分割。其技术核心在于利用多尺度特征生成可组合的原型,结合动态系数适应不同目标形态。未来可进一步融合Transformer的注意力机制,增强对复杂场景的建模能力。

浩瀚之水的专栏 476

scala(数组、序列)方法大全

Scala超详细方法的使用 1、addString def addString(b: StringBuilder): StringBuilder -【将数组中元素逐个添加到可变字符串序列b中】 scala> val a = Array(1,2,3,4,5) a: Array[Int] = Array(1, 2, 3, 4, 5) scala> val b = new Strin...

我爱大数据 7529

Python爬招聘网站:Selenium+ActionChains破解滑动验证码,批量采集岗位数据(新手可跑)

通过本文实战,你不仅学会了用Selenium+ActionChains破解滑动验证码,还掌握了爬虫的核心优化思路——“模拟人类行为”是突破反爬的关键。这套逻辑不仅适用于招聘网站,还能迁移到其他有滑动验证码的平台(如电商、资讯网站)。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1188

Scala的Array方法

增: 集合之间合并类 ++ ++:/union +=增加一个string类型的集合,常用于map/元组/ArrayBuffer[T] var m=Map(“a”->1);m+=(“j”->0) 集合增加元素 +: :+ padTo 后补齐 删: 集合去除元素 drop 去除前n个 dropRight dropWhile 改: 集合修改 patch update/updated 取值: 集合取值(单个、头尾、部分) apply head/headOption 返回集合第一个元素 tail 取出

aosimth的博客 896

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Scala函数大全

scala函数大全

qq_60410574的博客 4762

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Scala系列 (四)Scala数组功能分类整理---更利于记忆与理解运用实战!!

写在前面: 我是「nicedays」,一枚喜爱做特效,听音乐,分享技术的大数据开发猿。这名字是来自world order乐队的一首HAVE A NICE DAY。如今,走到现在很多坎坷和不顺,如今终于明白nice day是需要自己赋予的。 白驹过隙,时光荏苒,珍惜当下~~ 写博客一方面是对自己学习的一点点总结及记录,另一方面则是希望能够帮助更多对大数据感兴趣的朋友。如果你也对 大数据与机器学习感兴趣,可以关注我的动态 https://blog.youkuaiyun.com/qq_35050438,让我们一起挖掘数据与.

qq_35050438的博客 823

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

Scala --- Array方法大全(二)

Scala --- Array方法大全系列

qq_57151931的博客 1887

Scala之Array方法

文章目录1、基本操作2、++ 合并集合3、++:合并集合,新集合类型由冒号右边的集合类型决定4、+: 在数组前面添加一个元素5、:+ 在数组末尾添加一个元素6、/: 从左到右进行操作 , :\ 从右往左进行操作7、addString 将数组中的元素逐个添加到b中8、addString 将数组中的元素逐个添加到b中,每个元素用sep分隔符分开,可设定开始及结束字符9、aggregate 聚合计算10、apply 取出指定索引处的元素11、canEqual 判断两个对象是否可以进行比较12、cha

小财迷嘻嘻的博客 3632

scala之Array方法

scala之数组 val arr:Array[Int]=Array(1,2,3,4) //声明一个数组对象 val firstValue=arr(0) //读取第一个元素 arr(3)=100 //吧第四个元素替换为100 //所有元素乘2 val big=arr.map(_*2) val big=arr.map(x=>x*2) ++ 合并两个数组的所有元素 val a=Array(1,2) val b=Array(3,4) val c=a++b // (1,2,3,4) ++: 和++类似,多了

xiaoxionghanhan的博客 1920

scala函数总结

数组函数大全: 方法名:++ 描述:合并两个序列,若类型不同以左侧类型为主,左侧集合的值在新集合的左侧 返回值:左边序列类型 方法名:++: 描述:合并两个序列,若类型不同则以右边的类型为主, 返回值:右边序列的类型 方法名:+: 描述:在数组前面添加一个元素,在数组的头部添加,冒号要离数组近 返回值:数组(类型依据集合中的元素类型而定) 方法名:/: 描述:对数组中的所有元素从左向右遍历,进行相同的迭代操作,是flodLeft的简写 返回值:计算的结果 方法名::+ 描述:在数组后面添加一个元素

qq_34566673的博客 1486

scala函数大全

scala函数解释加实例

weixin_53898747的博客 3958

Scala系列 (二)Scala数组----超详细常用方法及其用法

写在前面: 我是「nicedays」,一枚喜爱做特效,听音乐,分享技术的大数据开发猿。这名字是来自world order乐队的一首HAVE A NICE DAY。如今,走到现在很多坎坷和不顺,如今终于明白nice day是需要自己赋予的。 白驹过隙,时光荏苒,珍惜当下~~ 写博客一方面是对自己学习的一点点总结及记录,另一方面则是希望能够帮助更多对大数据感兴趣的朋友。如果你也对 大数据与机器学习感兴趣,可以关注我的动态 https://blog.youkuaiyun.com/qq_35050438,让我们一起挖掘数据与.

qq_35050438的博客 3761

Scala

1)Scala的集合有三大类:序列Seq、集Set、映射Map,所有的集合都扩展自Iterable特质。2)对于几乎所有的集合类,Scala都同时提供了可变和不可变的版本,分别位于以下两个包。不可变集合:scala.collection.immutable可变集合: scala.collection.mutable3)Scala不可变集合,就是指该集合对象不可修改,每次修改就会返回一个新对象,而不会对原对象进行修改。类似于java中的String对象。

weixin_63713552的博客 641

scala函数

scala函数 ++ 将2个集合合并成新数组,新数组包含2个集合对象的内容 val a=Array(1,2) val b=Array(3,4) a++b res0: Array[Int] = Array(1, 2, 3, 4) ++: 同上,但是最后结果类型同:右侧的类型一样 val a=Array(1,2) val b=List(3,4,5) a++:b res1: List[Int] = List(1, 2, 3, 4, 5) +: 在数组中添加一个数,24+:k在最前添加,k:+24在

Liziyu3312的博客 521

scala--Array的函数

Array 数组是一种可变的、可索引的数据集合。在Scala中用Array[T]的形式来表示Java中的数组形式 T[] Array提供的方法 ++ 合并数组,返回一个新的数组 var a=Array(1,2) var b=Array(3,4) var c=a++b ++: 合并数组,类型以右边为主 注:用于可变数组 var a=Array(1,2) var b=Array(3,4) var c=a++:b var d=b++:a +: 在集合前面增加元素 var a=List(1,2

timicai的博客 858

scala数组集合函数大全

方法名 描述 返回值类型 举例 结果 apply(int i) 按下标取数组数据 同a(i) 数组元素类型 Array(1 ,2,3,4,5).apply(3) res45: Int = 4 ++ 合并数组返回一个新数组,若不同类型以左边为准 左边类型 Array(1 ,2) ++ List(7,8,9) res44: Array[Int] = Array(1, 2, 7, 8, 9) union 合并两个序列,同操作符 ++ 左边类型 Array(1,2) union List(...

sun_0128的博客 1万+
上一篇: 【大数据学习】VBox Ubuntu 14.04虚拟机安装
下一篇: Flask-SQLAlchemy 根据mysql数据库表反向生成 model的 py文件
FormatFa
博客等级 码龄11年 91粉丝 10原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值