gpt4 book ai didi

c# - 如何使用嵌套 for 循环和递归来创建字符串组合列表

转载 作者:行者123 更新时间:2023-11-30 16:50:04 25 4
gpt4 key购买 nike

我在键/值对中有一个 SortedList,到目前为止它存储了 3 个这样的条目:

Key: "Shapes" and Value: ["Cube", "Sphere"]
Key: "Colors" and Value: ["Red", "Green"]
Key: "Sizes" and Value: ["Big", "Small"]

我的目标是生成所有字符串组合并将它们存储到另一个列表中,如下所示:

"Shape:Cube/Colors:Red/Size:Big"
"Shape:Cube/Colors:Red/Size:Small"
"Shape:Cube/Colors:Green/Size:Big"
"Shape:Cube/Colors:Green/Size:Small"
"Shape:Sphere/Colors:Red/Size:Big"
"Shape:Sphere/Colors:Red/Size:Small"
"Shape:Sphere/Colors:Green/Size:Big"
"Shape:Sphere/Colors:Green/Size:Small"

这里需要注意的是,第一个 SortedList 中可以有 N 个条目,所以我无法真正在我的源代码中事先创建 for 循环。我知道我应该使用递归来解决动态 N 值的棘手问题。

到目前为止,我只为 N=2 个条目提出了一个硬编码解决方案,但我无法将其转换为可以处理 N 个条目的任何值的递归:

for (int ns=0; ns < listFeaturesSuperblock.Values[0].Count; ns++) { 
for (int nc=0; nc < listFeaturesSuperblock.Values[1].Count; nc++) {

//prefab to load
string str = "PreFabs/Objects/" + listFeaturesSuperblock.Keys[0][ns] + ":" + listFeaturesSuperblock.Values[0][ns] + "/" + listFeaturesSuperblock.Values[1][nc] + ":" + listFeaturesSuperblock.Values[1][nc];
}
}

有人可以指出我正确的方向吗?我应该如何处理这个问题以及我需要学习什么才能更好地编写递归代码?

谢谢。

最佳答案

在您当前的方法中:

List<string> result = new List<string>;

ProcessItems(listFeaturesSuperblock, result);

这是递归方法:

void ProcessItems(SortedList<string, List<string>> data, List<string> result, int level = 0, string prefix = "PreFabs/Objects/")
{
for (int i = 0; i < data.Values[level].Count; i++)
{
string item = prefix + data.Keys[level] + ":" + data.Values[level][i] + "/";
if (level == data.Values.Count - 1)
result.Add(item);
else
ProcessItems(data, result, level + 1, item);
}
}

“结果”变量将包含所有排列。

关于c# - 如何使用嵌套 for 循环和递归来创建字符串组合列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35533771/

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