分治思想的概念
能用分治思想的基本特征:将一个大问题分解成多个小问题
1. 问题缩小到一定规模容易解决
2. 分解成的子问题是相同种类的子问题,即该问题具有最优子结构性质
3. 分解而成的小问题在解决之后要可以合并(归并的关健)—解决小问题后可以解决大问题
4. 子问题是相互独立的(若不独立则使用动态规划),即子问题之间没有公共的子问题
分治法的思想:
将原问题分解为几个规模小但类似于原问题的子问题,递归的求解这些子问题,然后再合并这些子问题的解来建立原问题的解。
分治模式在每层递归时都有三个步骤:分解,解决,合并。
分治思想的案例
1. 归并排序,快速排序
代码实现:略(java十大排序算法实现)
2. 全排列
问题描述:
一组字符串的全排列,按照全排列的顺序输出,并且每行结尾无空格。
输入:
输入一个字符串
输入示例:
请输入全排列的字符串:
abc
输出示例:
a b c
a c b
b a c
b c a
c b a
c a b
import java.util.Scanner;
public class Main{
public static void main(String args[]) {
Scanner sca=new Scanner (System.in);
char[] str=sca.nextLine().toCharArray();
print(str,0);
}
public static void print(char[] str,int index) {
if(index==str.length) {
System.out