完全ランク2(Java)

完全な配置のアイデア2:
{a、b、c}の完全な配置結果が{a、b、c}、{a、c、b} {b、a、c} {b、c、a} {c、 b、a} {c、a、b}。文字配列の最初のビットを順番に変更し、残りの2ビットを再帰的に解決できることがわかりますが、状況が解決されるたびに、元の順序が乱れるため、戻って元の順序に戻る必要があります一部の州。

コードは次のとおりです。

import java.util.ArrayList;
import java.util.Scanner;
public class Qpal {
    //全排列法二(多支路递归回溯)
    ArrayList<String> news=new ArrayList<>();//需要将Arraylist建立为全局变量
    public ArrayList<String> qpl1(String a)
    {
        char []b=a.toCharArray();//转为字符数组方便各个交换
        ArrayList<String> news1=qpl(b,0);
        return news1;
    }
    static void swap(char []a,int b,int c)//交换数组中的两个值
    {
        char temp=a[c];
        a[c]=a[b];
        a[b]=temp;
    }
    private ArrayList<String> qpl(char []a, int b)
    {

        if(b==a.length)//递归出口
        {
            news.add(new String(a));
        }
        for (int i=b;i<=a.length-1;i++)
    {
        swap(a,b,i);//交换第一位元素
        qpl(a,b+1);
        swap(a,b,i);//回溯
    }
        return news;
    }
    public static void main(String[] args) {
        Scanner a=new Scanner(System.in);
        String b=a.nextLine();//字符串输入
        ArrayList<String> news=new Qpal().qpl1(b);
        System.out.println(news);
    }
}

結果は次のとおりです。
ここに画像の説明を挿入

元の記事を14件公開 賞賛された0 訪問数234

おすすめ

転載: blog.csdn.net/lianggege88/article/details/105588521