2015-09-10 40 views
0

我有一個初始字符串: BBBCCC計算字符串前置字符的排列

B is +1C 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,等等等等

+0

那裏我加入了我所做的嘗試。我試圖接受一個初始字符串,並通過處理該初始字符串並根據我之前規定的規則創建排列,從而對字符串的ArrayList進行一些填充。 – Tukajo

+0

你的代碼有「E」和「S」,但你的描述有「B」和「C」。而且任何地方都沒有問題。 – Andreas

+0

我改變了這一點。如果你想檢查一下。我的問題是,通過實現初始字符串並根據之前所說的計算所有子字符串來操縱populatePermutations方法的好方法是什麼。 – Tukajo

回答

1

你需要一個遞歸方法。該方法將採用迄今爲止建立的字符串,迄今爲止的字母總和,以及目標長度作爲參數。

  • 如果達到目標長度,打印結果並返回。
  • 附加一個+1字母,然後自己調用。
  • 如果允許,請附加一個-1字母,然後調用它自己。

或代替目標長度的+1和-1字母數字留給追加。

+0

我們是否必須追加字母,或者我們是否會操縱字符串的字符數組中的字母位置? – Tukajo

+0

啊我明白了。我會試試看。 – Tukajo

+0

我想我很困惑的是,我們是不是使用我們的初始字符串'BBBCCC'作爲基礎參數進入我們的遞歸方法調用? – Tukajo