知识大全 Java键盘获取排列组合数,进行排列显示以及排列计算

Posted

篇首语:旧书不厌百回读,熟读精思子自知。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 Java键盘获取排列组合数,进行排列显示以及排列计算相关的知识,希望对你有一定的参考价值。

Java键盘获取排列组合数,进行排列显示以及排列计算  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  这段java代码是自己花了很长时间写的 基本java初学者都看的懂 不过理解这个思想就有点复杂了 需要耐心的看下去 如果用传统的for循环来写的话 很复杂 很难实现高中学过的排列组合数的显示 运算结果很简单 但是显示这些有可能的组合就比较困难了

  import java util *;

  public class test

  public static void main(String args[])

  

  int size;

  int count;

  Scanner s=new Scanner(System in);

  System out print( 请输入您输入的组合数的规模:(size) );

  size=s nextInt();

  int array[] = new int[size];

  for(int i= ;i<size;i++)

  

  System out print( 请输入要进行操作的数:\\t );

  array[i]=s nextInt();

  

  System out print( 您输入的数为: );

  for(int j= ;j<size;j++)

  

  System out print(array[j]+ );

  

  System out println( );

  System out println( 请输入要参与组合数的规模:(count) );

  count=s nextInt();

  int[] temp=new int[size];

  for(int i= ;i<size;i++)     //临时数组初始化为 数组 进行操作

  

  if(i<count)

  

  temp[i]= ;

  

  else

  

  temp[i]= ;

  

  

  System out print( 初始化的临时数组为: );    //打印临时初始化数组

  for(int i= ;i<size;i++)

  

  System out print(temp[i]);

  

  System out println( );            //换行

  boolean flag=false;

  int key= ;

  do                         //循环进行转置操作     变 左边的 全部到最左端操作

  

  int position= ;        //判断查询到的 的位置

  int numbers= ;         //记录查到的 位置前面的 的个数

  int q= ;

  int[] result=new int[count];

  System out println( );

  for(int i= ;i<array length;i++)       //输出数组的情况

  

  if(temp[i]== )

  

  result[q]=array[i];

  System out print(result[q]+ );

  q++;

  

  

  for (int i = ; i < size ; i++)     //找奥最后一个 的位置

  

  if (temp[i] == && temp[i + ] == )   //判断 的条件

  

  temp[i] = ;

  temp[i + ] = ;

  position = i;     //第一次循环扫描后 返回第一次循环最后的 的地址

  break;    //跳出if循环

  

  

  for (int i = ; i < position; i++)    //判断 左边的 的个数

  

  if (temp[i] == )

  numbers++;

  

  for (int i = ; i < position; i++)     //把 位置左边的 全部移到最左端

  

  if (i < numbers)

  temp[i] = ;

  else

  temp[i] = ;

  

  System out println( );

  System out print( 参考的临时数组为: );

  for(int i= ;i<size;i++)

  

  System out print(temp[i]);

  

  flag=false;

  for (int i = size count; i < size; i++)  // 判断是否为最后一个组合 当第一个 移动到数组的m n的位置 即n个 全部移动到最右端时 就得到了最后一个组合

  

  if (temp[i] == )

  flag = true;  //如果从第size numbers开始 扫描是不是最后一个组合

  

  key++;

  while(flag);

  int p= ;

  int[] array =new int[count];

  System out println( );

  for(int i= ;i<array length;i++)       //输出数组的情况

  

  if(temp[i]== )

  

  array [p]=array[i];

  System out print(array [p]+ );

  p++;

  

  

  System out println( );

  System out println( 可能次数为: +key);

  

  

  这个程序采用了一个临时的temp数组 被选中的置 没有被选中的置 然后扫描临时数组 发现 就置为 并且返回位置信息position 以便进行把position左边的 全部放到数组的最左端 这段程序还有一个大的难点就是 判断循环最后的一个条件 这个条件就是扫描从size numbers开始到size结束时的后面的数组中没有一个 就是最后一个可能的组合

cha138/Article/program/Java/hx/201311/26442

相关参考

知识大全 Java面向对象的排列组合算法

Java面向对象的排列组合算法  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  packageTe

组合排列的原则是什么?

  组合排列的原则是:安排每个组合在组合架上的位置时,要求方便走线并使走线最短,避免同一架上的10个组合间以及架间的配线迂回跨越。

组合排列的原则是什么?

  组合排列的原则是:安排每个组合在组合架上的位置时,要求方便走线并使走线最短,避免同一架上的10个组合间以及架间的配线迂回跨越。

组合的排列顺序有哪几种?怎样选用?

  根据组合排列图,组合的排列顺序有两种,一种称为“S”形排列法,另一种称为分段排列法,这两种方法都是自站外向站内自上而下地排列组合。对于咽喉较短的车站选用“S”型排列法,对于咽喉较长的车站迁用分段排

组合的排列顺序有哪几种?怎样选用?

  根据组合排列图,组合的排列顺序有两种,一种称为“S”形排列法,另一种称为分段排列法,这两种方法都是自站外向站内自上而下地排列组合。对于咽喉较短的车站选用“S”型排列法,对于咽喉较长的车站迁用分段排

知识大全 15446的排列组合有多少种,请写出来,谢谢

15446的排列组合有多少种,请写出来,谢谢!5!/2!=60种因为4之间的排法造成重复,所以除掉重复的,0到9的排列组合有多少种不晓得排列六位数为一组是什么意思,如果是从中抽取6个数字排列为一个六位

知识大全 为什么排列~组合~概率~的数学题这么难类~~给点技巧~~重重有赏~

为什么排列~组合~概率~的数学题这么难类~~给点技巧~~重重有赏~!解答排列组合问题,首先必须认真审题,明确是属于排列问题还是组合问题,或者属于排列与组合的混合问题,其次要抓住问题的本质特征,灵活运用

知识大全 一个实现排列和组合的JavaBean

一个实现排列和组合的JavaBean  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  在我们编程时

知识大全 排列组合问题:三种人群A、B、C,每个人群分成三种人a、b、c,一共能有多少中排列

急!排列组合问题:三种人群A、B、C,每个人群分成三种人a、b、c,一共能有多少中排列?  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发

知识大全 求一个数组元素的所有排列组合

  //array为要组合的数组size为长度firstIndex为要放在所以组合最前面的元素result保存所有组合每一行为一个组合  publicintfunc(int[]arrayint[][]