整数分划
正整数n的一个分划是指把n表示成若干个正整数的和。这里的分划与顺序无关,例如6=5+1 和
6=1+5即被认为是同一种分划。另外,这个整数本身也算一种分划。
例如,正整数n=6,可以分划为
6
5+1
4+2,
4+1+1
3+3, 3+2+1, 3+1+1+1
2+2+2, 2+2+1+1, 2+1+1+1+1
1+1+1+1+1+1
该问题是数论、组合数学、概率论、数理统计学、图论研究中的重要问题,在物理、数学研究中占据重要地位,并且它有很多延伸的应用。例如,网络传输中
与流密码安全性相关的某些问题。
产生一个正整数n的分划可以看成一个递归的过程。把n分解成n-i和i两部分(1≤i≤n),然后检查i或n-i是否可以继续被分解(只取其中较小
的那个进行继续分解,可以避免检查重复),直到最后分解完成。
输入:
待分解的正整数n
输出:
对应的排好序的分解,每行一个,中间用空格分开
样例输入:
6↵
样例输出:
6↵
5□
1↵
4□
2↵
4□
1□
1↵
3□
3↵
3□
2□
1↵
3□
1□
1□
1↵
2□
2□
2↵
2□
2□
1□
1↵
2□
1□
1□
1□
1↵
1□
1□
1□
1□
1□
1↵
import java.util.Scanner;
public class Main {
public static void fun(int[] str,int n,int m){
if(n==0)
{
for(int i=0;i<=m-1;i++)
{
if(i==(m-1))
System.out.println(str[i]);
else
System.out.print(str[i]+" ");
}
}
else
{
for(int i=n;i>=1;i--)
{
if(m==0||i<=str[m-1])
{
str[m]=i;
fun(str,n-i,m+1);
}
}
}
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
fun(new int[n],n,0);
}
}
分享到:
相关推荐
正整数n的一个分划是指把n表示成若干个正整数的和。这里的分划与顺序无关,例如6=5+1 和 6=1+5即被认为是同一种分划。另外,这个整数本身也算一种分划。 例如,正整数n=6,可以分划为 6 5+1 4+2, 4+1+1 3+3, 3+2+1, ...
1. **数组的定义**:数组是一个变量,它在内存中划出连续的空间来存储相同数据类型的一组数据。例如,你可以声明一个`int`类型的数组来存储整数值。 ```java int[] numbers; ``` 2. **数组的声明和初始化**:...
- **快速排序**:基于分治策略,选取基准值,划分子序列,递归排序,平均时间复杂度O(n log n)。 - **选择排序**:每次找到未排序部分的最小(大)值,放到正确位置,时间复杂度O(n^2)。 - **插入排序**:将未...
1. **定义递归函数**:在这个问题中,我们需要创建一个名为`findMinMax`的递归函数,它接受一个整数数组`arr`和数组的起始索引`start`与结束索引`end`作为参数。该函数的目的是找到数组在给定范围内的最大值和最小值...
7. **将整数倒序输出,剔除重复数据**:涉及到整数的位操作,可能需要将整数转换为字符串,然后反转字符串并去重。 8. **大数相减**:大数运算通常需要用到字符串存储,然后逐位进行减法运算,注意进位和借位的情况...
DataMatrix 码是一种二维码,zxing 是一个 Java 库,用于解析和生成各种二维码。 在 zxing 源码中,DataMatrix 码部分的代码结构与 QR 码基本相同。Detector 的功能是从原始图像中找出符号码的部分,并进行透视转换...
- **递归调用**:快速排序算法的核心在于递归调用自身,通过不断地划分子数组,直到子数组中只剩下一个元素或没有元素为止。 以上就是从给定文档中提取的主要IT知识点。这些知识点涵盖了Java编程的基础语法、数组...
厄拉多塞斯筛法(Sieve of Eratosthenes)是一种古老的寻找素数的方法,其基本思路是从2开始,依次将所有素数的倍数划去,保留下来的未被划去的数字即为素数。该方法简单高效,尤其适用于生成较小范围内的素数列表。...
这个题目可能要求应聘者编写一个程序,根据设定的及格分数(比如60分),将一组考试成绩进行筛选,找出及格与不及格的名单。这涉及到基础的数据处理和条件判断。 2. **样题-中级题:亮着电灯的盏数** 可能涉及...
这一划时代的发明被誉为“电子大脑”的诞生,但它存在着一个致命的缺陷——没有存储程序的能力。 2. **计算机的发展历程**: - **第一代 (1946-1958)**:以电子管为主要元件的计算机,主要用于科学计算和军事计算...