我有一個初始字符串: BBBCCC
。計算字符串前置字符的排列
凡B is +1
和C is -1
規則:甲C
不能放置如果B's and C's
它前面的累計值將導致一個負數。
例如,BCCBBC
無法工作,因爲我們有+1 - 1 (0) -1 (-1) +1 (0) +1 (1) -1 (0)
,因爲它在積累過程中會導致負數。
這意味着接受的排列將是以下幾點:
BBBCCC
BBCBCC
BBCCBC
BCBBCC
BCBCBC
我的代碼的一些想法,但我不知道有什麼好辦法來啓動,這是用給定的計算字符串N
初始B
即可。
我正試圖在Java中實現這一點。
我有迄今:
import java.util.ArrayList;
import java.util.Scanner;
public class Main {
private static ArrayList<String> pathPermutations = new ArrayList<String>();
public static void main(String[] args) {
int numToEnter;
Scanner myScanner = new Scanner(System.in);
System.out.println("Enter a node: ");
numToEnter = myScanner.nextInt();
calculatePermutations(numToEnter);
}
public static void calculatePermutations(int nodeNum){
pathPermutations.clear();
pathPermutations.add(constructInitialPath(nodeNum));
System.out.println(pathPermutations.get(0));
}
public static String constructInitialPath(int nodeNum){
String pathString = "";
for(int i = 0; i<nodeNum*2;i++){
if(i<nodeNum){
pathString+="B";
}else{
pathString+="C";
}
}
return pathString;
}
public void populatePermutations(String s){
int length = s.length()/2;
int accumulator = 0;
int nodeIntercepts = 0;
String newPermutation = "";
for(int i = 0; i<length*2;i++){
if(i==0){
newPermutation+="B";
accumulator++;
}else if(i>0 && accumulator>){
}
}
}
}
如何操作的populatePermutations
方法採取的BBBCCC
和遞歸(或N B的/ C的排序的任意數)的初始字符串計算根據子我的規則之前說過。
例如:
第1步:BBBCCC
第2步:BBCBCC
,等等等等
那裏我加入了我所做的嘗試。我試圖接受一個初始字符串,並通過處理該初始字符串並根據我之前規定的規則創建排列,從而對字符串的ArrayList進行一些填充。 – Tukajo
你的代碼有「E」和「S」,但你的描述有「B」和「C」。而且任何地方都沒有問題。 – Andreas
我改變了這一點。如果你想檢查一下。我的問題是,通過實現初始字符串並根據之前所說的計算所有子字符串來操縱populatePermutations方法的好方法是什麼。 – Tukajo