사전 순서 배열
문자열의 전체 배열은 다음과 같습니다.
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);
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.