`
啸笑天
  • 浏览: 3460045 次
  • 性别: Icon_minigender_1
  • 来自: China
社区版块
存档分类
最新评论

用1、2、3、3、4、5这六个数字,用java写一个程序,打印出所有不同的排列 要求:"4"不能在第三位,"3"与"5"不能相连。

阅读更多

用1、2、3、3、4、5这六个数字,用java写一个程序,打印出所有不同的排列 要求:"4"不能在第三位,"3"与"5"不能相连。

递归:

 

import java.util.ArrayList;
import java.util.List;

public class Test1 {
	 public static void f(String in, ArrayList al) {
	        if (al.size() == 1) {
	            String tmp = in ;
	            if (!(tmp.contains("35") || tmp.contains("53") || tmp.indexOf('4') == 2)) {
	                System.out.println(tmp);
	            }
	        } else {
	            ArrayList hsc = (ArrayList) al.clone();
	            if (in.length() != 0) {
	                hsc.remove(in.substring(in.length() - 1));
	            }
	            for (Object i : hsc) {
	                f(in + i, hsc);
	            }
	        }
	    }
	 public static void ff(String in, ArrayList<String> al){
		 if (al.size()==1) {
			if (!(in.contains("35")||in.contains("53")||in.indexOf("4")==2)) {
				System.out.println(in);
			}
		} else {
			ArrayList<String> hsc=(ArrayList<String>) al.clone();
			if (in.length()!=0) {
				hsc.remove(in.substring(in.length()-1));
			}
			for (String string : hsc) {
				ff(in+string,hsc);
			}
		}
	 }
	public static void main(String args[]) {
		  ArrayList<String> al = new ArrayList<String>();
	        al.add("1");
	        al.add("2");
	        al.add("3");
	        al.add("4");
	        al.add("5");
	        al.add("6");
	        f("", al);
	}
}

 循环遍历:

 

import java.util.ArrayList;

public class Test2 {
	public static void main(String args[]) {
		int[] nums = { 1, 2, 2, 3, 4, 5 };
		for (int i = 0; i < nums.length; i++) {
			for (int j = 0; j < nums.length; j++) {
				if (i == j || (nums[i] * nums[j] == 15))
					continue;
				for (int k = 0; k < nums.length; k++) {
					if (k == i || k == j || (nums[j] * nums[k] == 15)
							|| nums[k] == 4) {
						continue;
					}
					for (int m = 0; m < nums.length; m++) {
						if (m == k || m == i || m == j
								|| (nums[k] * nums[m] == 15)) {
							continue;
						}
						for (int n = 0; n < nums.length; n++) {
							if (n == m || n == k || n == i || n == j
									|| (nums[m] * nums[n] == 15)) {
								continue;
							}
							for (int l = 0; l < nums.length; l++) {
								if (l == n || l == m || l == k || l == j
										|| l == i || (nums[n] * nums[l] == 15)) {
									continue;
								}
								System.out.println(nums[i] + "" + nums[j] + ""
										+ nums[k] + "" + nums[m] + "" + nums[n]
										+ "" + nums[l]);
							}
						}
					}
				}
			}
		}
	}
}
分享到:
评论

相关推荐

    java程序设计实用教程(第3版)习02.07 数字菱形.rar

    在Java编程语言中,"数字菱形"是一个常见的练习题目,它要求程序员通过代码来打印出数字排列成的菱形形状。这个练习旨在帮助初学者掌握控制台输出、循环结构以及条件判断等基本编程概念。在《Java程序设计实用教程...

    java源码包---java 源码 大量 实例

    2个目标文件,FTP的目标是:(1)提高文件的共享性(计算机程序和/或数据),(2)鼓励间接地(通过程序)使用远程计算机,(3)保护用户因主机之间的文件存储系统导致的变化,(4)为了可靠和高效地传输,虽然用户...

    编写一个java应用程序

    用户从键盘输入一个1-9999之间的数,程序将判断这个数是几位数,并判断这个数是否回文数。回文数是指将数含有的数字逆序排列后得到的数和原数相同,例如12121,4224,6778776等都是回文数。 1)程序具有判断用户的输入...

    java程序设计实用教程(第3版)习02.06 数字塔.rar

    例如,最底层可能只有一个数字1,上一层可能有2个数字1、2,再上一层可能有3个数字1、2、3,以此类推。这个习题可能是要求学生编写一个程序,能够根据输入的层数生成对应的数字塔。 解决这个问题,首先需要理解递归...

    java小练习,Java练习小程序,Java必用

    - 可以使用循环结构进行判断,并打印出所有的质数。 28. **选择排序**: - 对一个数组进行排序。 - 选择排序算法的基本思想是在未排序序列中找到最小(或最大)元素,存放到排序序列的起始位置。 29. **二维...

    java源码包2

    2个目标文件,FTP的目标是:(1)提高文件的共享性(计算机程序和/或数据),(2)鼓励间接地(通过程序)使用远程计算机,(3)保护用户因主机之间的文件存储系统导致的变化,(4)为了可靠和高效地传输,虽然用户...

    java源码包3

    2个目标文件,FTP的目标是:(1)提高文件的共享性(计算机程序和/或数据),(2)鼓励间接地(通过程序)使用远程计算机,(3)保护用户因主机之间的文件存储系统导致的变化,(4)为了可靠和高效地传输,虽然用户...

    成百上千个Java 源码DEMO 3(1-4是独立压缩包)

    凯撒加密解密程序 1个目标文件 1、程序结构化,用函数分别实现 2、对文件的加密,解密输出到文件 利用随机函数抽取幸运数字 简单 EJB的真实世界模型(源代码) 15个目标文件 摘要:Java源码,初学实例,基于EJB的真实...

    Java语言写幸运抽奖程序

    通过以上分析,我们可以看到这个Java程序是如何使用基本的数据结构(数组)、控制流(循环)和算法(冒泡排序)来实现一个简单的功能——生成五个随机数,排序并输出它们的和。这对于初学者来说是一个很好的练习,...

    成百上千个Java 源码DEMO 4(1-4是独立压缩包)

    凯撒加密解密程序 1个目标文件 1、程序结构化,用函数分别实现 2、对文件的加密,解密输出到文件 利用随机函数抽取幸运数字 简单 EJB的真实世界模型(源代码) 15个目标文件 摘要:Java源码,初学实例,基于EJB的真实...

    根据输入行数,打印出杨辉三角形.docx

    这个三角形的规律是:竖边和斜边都是“1”,内部的任何一个数字正好等于它正上方的数字和左上角的数字两个数字之和。 问题描述:根据输入的行数,打印出杨辉三角形。 问题分析:杨辉三角形的规律是:竖边和斜边都...

    java源码包4

    2个目标文件,FTP的目标是:(1)提高文件的共享性(计算机程序和/或数据),(2)鼓励间接地(通过程序)使用远程计算机,(3)保护用户因主机之间的文件存储系统导致的变化,(4)为了可靠和高效地传输,虽然用户...

    用java写的扬辉三角 觉得写的还不错 大家看一下

    接着定义了一个名为`Gyx`的公共类,其中包含`main`方法,这是Java程序的入口点。 在`main`方法内部,创建了一个`Scanner`对象`sc`来获取用户输入的行数`n`。之后,创建了两个长度为`n+2`的整型数组`array1`和`array...

    java面向对象程序设计习题大全

    - 定义一个名为`Person`的类,包含属性`name`和`age`,以及一个打印个人信息的方法。 - 示例代码: ```java public class Person { private String name; private int age; public Person(String name, int ...

    蓝点被必做的算法经典题java.c/c++

    - **目标**: 使用数字1、2、2、3、4、5打印出所有不同的排列,限制“4”不能在第三位,“3”与“5”不能相邻。 - **程序分析**: - 使用递归方法生成所有可能的排列。 - 在递归过程中加入限制条件,避免生成不符合...

    Java 1,2,3,4能组成多少个互不相同且无重复数字的实现代码

    这将告诉我们有多少个不同的三位数可以由1、2、3、4组成,且每个数字仅出现一次。 这种问题属于组合数学中的排列问题,具体来说,是一个从4个不同元素中取3个进行排列的问题,其公式为`P(4, 3)`或`4! / (4-3)!`,...

    java程序设计题目.pdf

    Java是一种广泛使用的编程语言, Java程序设计题目.pdf提供了多个Java程序设计题目,涵盖了顺序程序设计、分支和循环程序设计、数组的应用等方面。这些题目旨在考察学生对Java语言的掌握程度和编程能力。 一、顺序...

    50道JAVA基础编程练习题

    【程序 3】 题目:打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。 程序分析:利用 for 循环控制 100-999 个数,每个数分解出个位、十位、百位,然后计算立方和判断是否...

    java语言程序设计基础篇第十版第十三章练习标准答案.pdf

    这个类具有三个私有变量 `side1`、`side2` 和 `side3`,分别表示三角形的三个边长。类中实现了 `getArea` 方法和 `getPerimeter` 方法,它们分别计算三角形的面积和周长。`getArea` 方法使用 Heron's formula 计算...

    打印输出魔方(它的每一行、每一列和对角线之和均相等)

     4 9 2 魔方阵中各数排列规律为: ⑴、将“1”放在第一行的中间一列; ⑵、从“2”开始直到n×n为止的各数依次按下列规则存放:每一个数存放的行比前一个数的行数减1,列数同样 加1;⑶、如果上一数的行数为1,则...

Global site tag (gtag.js) - Google Analytics