gpt4 book ai didi

java - 计算字符串的排列,其中前面的字符很重要

转载 作者:行者123 更新时间:2023-12-01 11:09:44 26 4
gpt4 key购买 nike

我有一个初始字符串:BBBCCC

其中B 为+1C 为-1

规则:如果C前面的B和C的累加值将导致负数,则不能放置C

例如,BCCBBC 无法工作,因为我们有 +1 - 1 (0) -1 (-1) +1 (0) +1 (1) -1 (0) 因为它在累加过程中会产生负数。

这意味着可接受的排列如下:

BBBCCCBBCBCCBBCCBCBCBBCCBCBCBC

我对代码有一些想法,但不确定使用给定的由 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.BCBCC

最佳答案

你需要一个递归方法。该方法将以迄今为止构建的字符串、迄今为止的字母总和以及目标长度作为参数。

  • 如果达到目标长度,则打印结果并返回。
  • 附加 +1 字母,然后调用自身。
  • 如果允许,请改为附加 -1 字母,然后调用自身。
<小时/>

或者代替目标长度,剩下要附加的 +1 和 -1 字母的数量。

关于java - 计算字符串的排列,其中前面的字符很重要,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32513256/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com