【发布时间】:2015-09-10 23:38:41
【问题描述】:
我有一个初始字符串:
BBBCCC.
B is +1 和 C is -1 在哪里
规则:如果B's and C's前面的累积值会导致负数,则不能放置C。
例如,BCCBBC 无法工作,因为我们有 +1 - 1 (0) -1 (-1) +1 (0) +1 (1) -1 (0),因为它在累积期间会导致负数。
这意味着接受的排列如下:
BBBCCC
BBCBCC
BBCCBC
BCBBCC
BCBCBC
我对代码有一些想法,但不确定使用给定的N 初始Bs 计算字符串是什么好方法。
我正在尝试在 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
第二步。BBCBCC等。
【问题讨论】:
-
在那里我添加了我所做的尝试。我正在尝试接收一个初始字符串并通过操纵该初始字符串并根据我之前所述的规则创建排列来对字符串的
ArrayList进行一些填充。 -
你的代码有“E”和“S”,但你的描述有
B和C。而且仍然没有任何问题。 -
我已经改变了。如果你愿意检查一下。我的问题是,通过实现初始字符串并根据我之前所说的计算所有子字符串来操作 populatePermutations 方法的好方法是什么。
-
对于这种逻辑,你需要一个recursive method。
-
把你的问题放到问题里,不是评论。
标签: java string logic permutation