`
michelecindy
  • 浏览: 175696 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

1、2、2、3、4、5六个数字,请打印出所有6位的排列,要求:4不能在第三个,3和5不能相邻!

    博客分类:
  • Java
 
阅读更多
package ceshi;

public class Test3 {
    // 当前固定部分
    private String CurFixPart;

    private String PreGenNum;

    public static void main(String[] args) {
        Test3 t = new Test3();
        t.GenControll("123456");
    }

    // 调整字符串s位置pos字符到最前
    private String shift(String s, int pos) {
        String newStr;
        if (s.length() > pos + 1)
            newStr = s.substring(pos, pos + 1) + s.substring(0, pos)
                    + s.substring(pos + 1);
        else
            newStr = s.substring(pos) + s.substring(0, pos);
        return newStr;
    }

    private int Validate(String newNum) {
        String newGenNum = CurFixPart + newNum;
        if (Integer.valueOf(newGenNum) <= Integer.valueOf(PreGenNum))
            return 0;
        if (newGenNum.substring(2, 3).equals("4")
                || (newGenNum.indexOf("35") != -1)
                || (newGenNum.indexOf("53") != -1))
            return 0;

        PreGenNum = newGenNum;
        System.out.println("----"+newGenNum);
      
        return 0;
    }

 public void GenControll(String Base) {
        PreGenNum = "0";
        CurFixPart = "";
        GenNext(Base, 0);
    }

    public void GenNext(String varPart, int curPos) {
        if (varPart.length() == 2) {
            Validate(varPart);
            Validate(shift(varPart, 1));
            return;
        }
        // Next Layer
        String newGen = shift(varPart, curPos);
        String SavedFixPart = CurFixPart;
        CurFixPart = CurFixPart + newGen.substring(0, 1);
        GenNext(newGen.substring(1), 0);
        CurFixPart = SavedFixPart;
        // 同层递增
        if (curPos == varPart.length() - 1)
            return;
        GenNext(varPart, curPos + 1);
        
    }
}
分享到:
评论

相关推荐

    题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?

    - 虽然在代码中没有直接使用数组,但可以将这个过程理解为在数字数组{1, 2, 3, 4}上的排列操作。生成的所有三位数实际上就是数组元素的一种排列。 4. **程序设计基础**: - 这个问题的解决方案展示了结构化程序...

    c程序100例 题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?

    在C#编程中,我们经常会遇到需要解决排列组合问题,比如本题所示的例子:如何用1、2、3、4这四个数字组成互不相同且无重复数字的三位数,并计算总数以及列举出所有可能的组合。这个问题属于组合数学中的全排列问题,...

    打印杨辉三角的c语言程序

    杨辉三角是一个由数字排列成的三角形数表,一般形式如下:  1 n=0  1 1 n=1  1 2 1 n=2  1 3 3 1 n=3  1 4 6 4 1 n=4  1 5 10 10 5 1 n=5  1 6 15 20 15 6 1 n=6 现编写c语言程序使得打印以上表

    C经典算法之产生可能的集合

    根据给定的文件信息,我们可以总结出两个与C语言编程相关的经典算法问题,涉及如何生成一个数字集合的所有可能子集。下面将详细解释这两个算法及其背后的逻辑。 ### 算法一:使用二进制表示法生成所有子集 #### ...

    依次去掉n中的某一位数字,得到m个整数,并将这m个整数按从小到大的次序排列后输出.docx

    在这个编程问题中,我们需要实现一个程序来处理一个正整数,按照特定的规则生成一系列新的整数,并将它们按升序排列输出。这个问题涉及到的主要知识点包括C++编程、一维数组的操作、冒泡排序算法以及输入输出的处理...

    cPPdaima.zip_4 3 2 1

    描述中提到的问题是:用数字1、2、3、4这四个数字,如何组合成不同的、无重复数字的三位数,并要求列出所有这些三位数。 在解答这个问题之前,我们需要理解一些基本的排列组合知识。排列是指从n个不同元素中取出m...

    pascal 从X个数字中选出N个数字的排法

    本篇文章将详细解析一个具体的排列问题:“从1到X这X个数字中选出N个,排成一列,相邻两数不能相同,求所有可能的排法”。我们通过Pascal语言来实现这一功能,并深入探讨其背后的逻辑和技术要点。 #### 问题描述 ...

    javascript入门笔记

    特点:将 a 和 b 先转换为二进制,按位操作,对应位置上的两个数字,相同时,该位整体结果为0,不同时,该位的整体结果为 1 使用场合:快速交换两个数字 5 ^ 3 101 011 ========== 110 结果为 6 练习: ...

    cpp代码-有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?

    我们要计算从数字1、2、3、4中,不重复地选取三个数字来构成三位数的总数,以及具体有哪些这样的三位数。这是一个典型的编程挑战,通常会用到C++这样的编程语言来解决。 首先,我们需要理解“三位数”意味着百位、...

    cPP.zip_4 3 2 1

    因为有4个不同的数字(1、2、3、4),我们选择3个数字来分别填充百位、十位和个位,所以总的不同排列数量是4的阶乘除以剩余未使用数字的阶乘,即: `P(4, 3) = 4! / (4 - 3)! = 4 × 3 × 2 / 1 = 24` 因此,可以...

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

    ⑶、如果上一数的行数为1,则下一个数的行数为n(最下一行),如在3×3 方阵中,1在第1行,则2应 放在第3行第3列。 ⑷、当上一个数的列数为n时,下一个数的列数应为1,行数减1。如2在第3行第3列,3应 在第2行第1列...

    C++实验题:打印三角形图案

    题目要求编写一个程序,该程序能够根据用户的输入(包括行数与指定字符)来打印出不同大小和填充字符的等腰三角形。 #### 题目要求 1. **获取用户输入**:首先询问用户希望打印的三角形有多少行(`How many lines?`...

    一个关于java实现的迭代用法例子,太经典了

    用1、2、2、3、4、5这六个数字,用java写一个main函数,打印出所有不同的排列,如:512234、412345等,要求: "4 "不能在第三位, "3 "与 "5 "不能相连.

    用ksh打印所有排列

    根据提供的文件信息,本文将详细解释如何使用Korn Shell (ksh) 来实现一个程序,该程序可以生成并打印所有可能的排列组合。这里的关键是理解递归算法的应用以及 shell 脚本语言中的变量处理。 ### 核心概念 #### ...

    1-n整数的所有排列

    实现 整数1-n的所有的排列并且打印出来

    c代码-有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?

    这个题目就是一个典型的例子:如何用1、2、3、4这四个数字,组成所有互不相同且无重复数字的三位数。这个问题涉及到组合数学和数组遍历的编程技巧。 首先,我们需要理解这个问题的数学背景。对于四位数字,我们可以...

    易语言源码易语言数字圆形排列源码.rar

    在这个“易语言源码易语言数字圆形排列源码.rar”压缩包中,我们关注的是一个关于数字圆形排列的源码实现。这个程序可能涉及到的主要知识点包括: 1. 易语言基础:易语言的基础语法、数据类型、控制结构(如循环、...

    Cura15.04.2_for_HORI3D

    6. **高级功能**:除了基本的切片功能,Cura 15.04.2 for HORI3D还可能包括高级特性,如支撑结构生成、多零件排列、切片预览等,帮助用户在打印前预见到可能的问题并进行调整。 7. **安装文件**:压缩包中的"Cura...

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

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

Global site tag (gtag.js) - Google Analytics