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}上的排列操作。生成的所有三位数实际上就是数组元素的一种排列。 4. **程序设计基础**: - 这个问题的解决方案展示了结构化程序...
在C#编程中,我们经常会遇到需要解决排列组合问题,比如本题所示的例子:如何用1、2、3、4这四个数字组成互不相同且无重复数字的三位数,并计算总数以及列举出所有可能的组合。这个问题属于组合数学中的全排列问题,...
杨辉三角是一个由数字排列成的三角形数表,一般形式如下: 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++编程、一维数组的操作、冒泡排序算法以及输入输出的处理...
描述中提到的问题是:用数字1、2、3、4这四个数字,如何组合成不同的、无重复数字的三位数,并要求列出所有这些三位数。 在解答这个问题之前,我们需要理解一些基本的排列组合知识。排列是指从n个不同元素中取出m...
本篇文章将详细解析一个具体的排列问题:“从1到X这X个数字中选出N个,排成一列,相邻两数不能相同,求所有可能的排法”。我们通过Pascal语言来实现这一功能,并深入探讨其背后的逻辑和技术要点。 #### 问题描述 ...
特点:将 a 和 b 先转换为二进制,按位操作,对应位置上的两个数字,相同时,该位整体结果为0,不同时,该位的整体结果为 1 使用场合:快速交换两个数字 5 ^ 3 101 011 ========== 110 结果为 6 练习: ...
我们要计算从数字1、2、3、4中,不重复地选取三个数字来构成三位数的总数,以及具体有哪些这样的三位数。这是一个典型的编程挑战,通常会用到C++这样的编程语言来解决。 首先,我们需要理解“三位数”意味着百位、...
因为有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列...
题目要求编写一个程序,该程序能够根据用户的输入(包括行数与指定字符)来打印出不同大小和填充字符的等腰三角形。 #### 题目要求 1. **获取用户输入**:首先询问用户希望打印的三角形有多少行(`How many lines?`...
用1、2、2、3、4、5这六个数字,用java写一个main函数,打印出所有不同的排列,如:512234、412345等,要求: "4 "不能在第三位, "3 "与 "5 "不能相连.
根据提供的文件信息,本文将详细解释如何使用Korn Shell (ksh) 来实现一个程序,该程序可以生成并打印所有可能的排列组合。这里的关键是理解递归算法的应用以及 shell 脚本语言中的变量处理。 ### 核心概念 #### ...
实现 整数1-n的所有的排列并且打印出来
这个题目就是一个典型的例子:如何用1、2、3、4这四个数字,组成所有互不相同且无重复数字的三位数。这个问题涉及到组合数学和数组遍历的编程技巧。 首先,我们需要理解这个问题的数学背景。对于四位数字,我们可以...
在这个“易语言源码易语言数字圆形排列源码.rar”压缩包中,我们关注的是一个关于数字圆形排列的源码实现。这个程序可能涉及到的主要知识点包括: 1. 易语言基础:易语言的基础语法、数据类型、控制结构(如循环、...
6. **高级功能**:除了基本的切片功能,Cura 15.04.2 for HORI3D还可能包括高级特性,如支撑结构生成、多零件排列、切片预览等,帮助用户在打印前预见到可能的问题并进行调整。 7. **安装文件**:压缩包中的"Cura...
在Java编程语言中,"数字菱形"是一个常见的练习题目,它要求程序员通过代码来打印出数字排列成的菱形形状。这个练习旨在帮助初学者掌握控制台输出、循环结构以及条件判断等基本编程概念。在《Java程序设计实用教程...