`
he91_com
  • 浏览: 411190 次
文章分类
社区版块
存档分类
最新评论

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

 
阅读更多

import java.util.*;
public class test15 {
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=0;i<size;i++)
{
System.out.print("请输入要进行操作的数:\t");
array[i]=s.nextInt();
}
System.out.print("您输入的数为:");
for(int j=0;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=0;i<size;i++) //临时数组初始化为1、0数组,进行操作
{
if(i<count)
{
temp[i]=1;
}
else
{
temp[i]=0;
}
}
System.out.print("初始化的临时数组为:"); //打印临时初始化数组
for(int i=0;i<size;i++)
{
System.out.print(temp[i]);
}
System.out.println(""); //换行
boolean flag=false;
int key=1;
do //循环进行转置操作 10变01,左边的1全部到最左端操作
{
int position=0; //判断查询到的10 的位置
int numbers=0; //记录查到的10位置前面的1的个数
int q=0;
int[] result=new int[count];
System.out.println("");
for(int i=0;i<array.length;i++) //输出数组的情况
{
if(temp[i]==1)
{
result[q]=array[i];
System.out.print(result[q]+"、");
q++;
}
}
for (int i = 0; i < size-1; i++) //找奥最后一个10的位置
{
if (temp[i] == 1 && temp[i + 1] == 0) //判断10的条件
{
temp[i] = 0;
temp[i + 1] = 1;
position = i; //第一次循环扫描后,返回第一次循环最后的10的地址
break; //跳出if循环
}
}
for (int i = 0; i < position; i++) //判断10左边的1的个数
{
if (temp[i] == 1)
numbers++;
}

for (int i = 0; i < position; i++) //把10位置左边的1全部移到最左端
{
if (i < numbers)
temp[i] = 1;
else
temp[i] = 0;
}
System.out.println("");
System.out.print("参考的临时数组为:");
for(int i=0;i<size;i++)
{
System.out.print(temp[i]);
}
flag=false;
for (int i = size-count; i < size; i++) // 判断是否为最后一个组合:当第一个“1”移动到数组的m-n的位置,即n个“1”全部移动到最右端时,就得到了最后一个组合。
{
if (temp[i] == 0)
flag = true; //如果从第size-numbers开始,扫描是不是最后一个组合
}
key++;
}while(flag);
int p=0;
int[] array2=new int[count];
System.out.println("");
for(int i=0;i<array.length;i++) //输出数组的情况
{
if(temp[i]==1)
{
array2[p]=array[i];
System.out.print(array2[p]+"、");
p++;
}
}
System.out.println("");
System.out.println("可能次数为:"+key);
}
}

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

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

通过上面简短的介绍,再加上程序的理解,大家应该可以看的懂这段代码。本代码是放在myeclipse 10中写的,绝对可以跑的起来。这些都是本人一个键一个键敲出来的,希望大家顶一下,尊重一下劳动成果。如果有更好的意见,希望能够联系我。

分享到:
评论

相关推荐

    Java计算器Java

    这个计算器允许用户通过键盘输入或者直接点击按钮进行计算,是Java编程课程中常见的练习项目,旨在帮助学生掌握事件处理、GUI设计以及基本的数学运算逻辑。以下是这个“Java计算器Java”项目中涉及的主要知识点: 1...

    获取同时含有数字、大写字母、小写字母的随机字符串

    all_chars = string.ascii_letters + string.digits # 获取所有小写字母、大写字母和数字 if length raise ValueError("字符串长度至少为1") return ''.join(random.choice(all_chars) for _ in range(length))...

    java编写的计算器,小程序!

    在这个小程序中,开发者使用了Java的基础语法、类、对象以及Swing组件来构建一个图形化的计算器界面,使得用户可以通过点击按钮进行基本的数学运算。 1. **Java语言基础**:Java是一种面向对象的编程语言,它具有跨...

    Java+Swing图形界面开发与案例详解实例代码

    在实际案例中,例如开发一个计算器应用,我们可能需要使用JButton来表示数字和运算符,JTextField来显示计算结果,利用GridLayout布局使按钮整齐排列,同时设置事件监听器处理按钮点击事件,执行相应的计算逻辑。...

    Android自定义随机键盘

    本项目“Android自定义随机键盘”正为此目的设计,它能够实现一个随机数字和字母组合的软键盘,适用于Android 2.1到4.0及以上版本,并且解决了在使用过程中可能出现的无光标问题。 首先,我们要理解Android系统中的...

    虚拟键盘源码

    1. **用户界面设计**:虚拟键盘的外观设计,包括按键的形状、大小、颜色和排列方式。这通常使用图形用户界面(GUI)库来完成,例如HTML5的Canvas、JavaScript的jQuery UI、Android的XML布局或iOS的Storyboard。 2. ...

    java写的蜘蛛纸牌

    在实际编码过程中,开发者会使用控制台输出或者图形界面来显示游戏状态,通过事件监听器处理用户的输入,如点击鼠标或按下键盘,然后更新游戏状态。测试是开发过程中的重要环节,确保游戏规则的正确执行和程序的稳定...

    java制作拼图游戏

    根据提供的文件信息,我们可以推断出制作Java拼图游戏相关的知识点,并进行详细说明: 1. Java基础:制作拼图游戏首先需要掌握Java编程语言的基础知识,包括语法、数据类型、流程控制、数组、类和对象等概念。Java...

    JAVA编程例题习题

    这个问题是典型的排列组合问题,可以使用循环来解决,循环生成所有可能的三位数,并判断每个数是否满足条件,如果满足条件,则输出该数。 程序 12:企业发放的奖金根据利润提成。利润(I)低于或等于 10 万元时,奖金...

    纯java编写的蜘蛛纸牌(源码+成品)---感兴趣的可以看看

    4. 事件驱动编程:Java的AWT和Swing库提供了丰富的事件处理机制,使得程序能响应用户的鼠标点击、键盘输入等操作。 5. 回溯法:在游戏过程中,用户可能需要撤销操作,这时可以使用回溯法记录历史状态,当用户撤销时...

    java课程设计报告范例-计算器.doc

    Java 课程设计报告的核心是构建一个计算器应用,它不仅提供了基本的加减乘除运算,还包括了一些高级的科学计算功能。这份报告分为五个主要部分:需求分析、设计、实现、测试和总结体会。 1. 需求分析: 计算器程序...

    java应用编程实例

    例如,在`FlowLayoutDemo`类中,我们通过设置`FlowLayout.LEFT`参数来指定组件从左到右进行排列,并且每个组件之间会有默认的间隔。当有状态改变时,`itemStateChanged`方法会被调用,从而触发界面的重新绘制,显示...

    java 经典程序50道

    【程序11】则是一个典型的排列组合问题。在这个程序中,我们使用嵌套的for循环来遍历所有可能的三位数组合。每个位置上的数字都限制在1到4之间,且数字不能重复。当找到一个符合条件的组合时,程序将计数并打印出该...

    Java基础常见英语词汇

    Java是世界上最流行的编程语言之一,尤其在企业级应用开发中占据主导地位。了解并掌握Java中的常见英语词汇对于学习和工作至关重要。以下是一些关键概念的详细解释: 1. **Object-oriented (面向对象)**:Java是一...

    实验报告Java计算器.doc

    实验报告“Java计算器.doc”主要涉及Java编程语言中GUI(图形用户界面)的设计与实现,具体涵盖以下几个核心知识点: 1. **Java图形用户界面设计**: - Java提供了`java.awt`和`javax.swing`两个包来支持GUI的构建...

    Java课的小项目基于swing.zip

    下面将详细解释Java Swing以及它在创建桌面应用中的关键知识点。 1. **Swing组件**: - **JFrame**: 作为窗口的基础,JFrame是应用程序的主窗口。你可以在这个框架上添加其他组件来构建用户界面。 - **JPanel**: ...

    程序设计导引及在线实践java源代码.pdf

    从这三个实例中我们可以看到,Java程序设计涉及对输入数据的处理、逻辑条件的判断、循环和数组的操作、以及简单的数学计算。这些都是编程解决问题的基础。对于初学者来说,理解和掌握这些基础知识至关重要。 在实际...

    java词汇解释

    在Java中,`System`类提供了与系统交互的方法,例如获取当前时间、进行输入输出等。 #### out 输出,特指Java中`System.out`对象,它是标准输出流的一部分,通常用于向控制台输出信息。 #### print 打印,`System....

Global site tag (gtag.js) - Google Analytics