사전 순서 배열

4116 단어

문자열의 전체 배열은 다음과 같습니다.

import org.junit.Test;  
  
public class AllSort {  
  
    public void permutation(char[] buf, int start, int end) {  
        if (start == end) {//  ,   
            for (int i = 0; i <= end; i++) {  
                System.out.print(buf[i]);  
            }  
            System.out.println();  
        } else {//    
            for (int i = start; i <= end; i++) {  
                char temp = buf[start];//    
                buf[start] = buf[i];  
                buf[i] = temp;  
  
                permutation(buf, start + 1, end);//    
  
                temp = buf[start];//    
                buf[start] = buf[i];  
                buf[i] = temp;  
            }  
        }  
    }  
  
    @Test  
    public void testPermutation() throws Exception {  
        char[] buf = new char[] { 'a', 'b', 'c' };  
        permutation(buf, 0, 2);  
    }  
}  

자세한 확인:http://blog.csdn.net/randyjiawenjie/article/details/6313729

사전 시퀀스 알고리즘은 다음과 같습니다.


만약 이 n개의 수의 어떤 배열이 P: P1 P2 P3라고 가정하면...Pj-1 Pj Pj+1...Pk-1 Pk Pk+1...Pn
1. 이 서열의 맨 오른쪽 끝부터 왼쪽으로 자신과 인접한 오른쪽 수보다 작은 첫 번째 수를 찾아내고 그 아래에 j로 표시된 것을 기록한다. 즉, j=max{i|Pi
2. Pj 오른쪽이 Pj보다 큰 최소수 Pk를 찾아낸다.
3. 교환 Pj, Pk.이때 시퀀스가 P로 변경됨: P1 P2 P3...Pj-1 Pk Pj+1...Pk-1 Pj Pk+1...Pn
4. Pj+1을...Pn 역전, 즉 이 시퀀스의 다음 시퀀스 P": P1 P2 P3...Pj-1 Pn...Pk+1 Pj Pk-1...Pj+1
예:
1, 2, 3, 5, 7, 4, 6, 10, 9, 8은 1-10의 한 배열입니다.
1. 이 서열의 맨 오른쪽 끝부터 왼쪽으로 자신과 인접한 오른쪽 수보다 작은 첫 번째 수 6을 찾아내고 그 아래에 7로 표시한다
2.6 오른쪽이 6보다 큰 최소수는 8이다
3. 6, 8을 교환하면 1, 2, 3, 5, 7, 4, 8, 10, 9, 6
4. P8-P10을 뒤집기: 1, 2, 3, 5, 7, 4, 8, 6, 9, 10이 다음 시퀀스입니다.
다음을 수행합니다.
package July. ;

import java.util.Arrays;
import java.util.stream.StreamSupport;

/**
 * Created by lenovo on 2016/12/1.
 *  
 */


public class CalcAllPermutation_2 {
    //1, , , index
    void getDictionary(char[] input){
        System.out.println(new String(input));
        int i=0;
       while (true){
           for ( i=input.length-1;i>0;i--){
               if (input[i-1]min&&input[i]

문자의 모든 조합:

package July. ;

import java.util.Arrays;
import java.util.stream.StreamSupport;

/**
 * Created by lenovo on 2016/12/1.
 *  
 */


public class CalcAllPermutation_2 {
    //1, , , index
    void getDictionary(char[] input){
        System.out.println(new String(input));
        int i=0;
       while (true){
           for ( i=input.length-1;i>0;i--){
               if (input[i-1]min&&input[i]= m; --i) { //  
                subchars[m - 1] = chars[i - 1]; //  
                combination(chars, i - 1, m - 1, subchars, subn); //  i-1 m-1 
            }
        }
    }

    public static void main(String[] args){
        String input="adew";
        char [] c=input.toCharArray();
     //   Arrays.sort(c);
       // new CalcAllPermutation_2().getDictionary(c);
        combination(c);
    }
}

좋은 웹페이지 즐겨찾기