C# 简单的统计指定几个字符组合的所有结果
比如 用 a,b,c,d 4个字符组成一个8个长度的字符串,问一共有多少可能,应该有4的8次方种,用代码简单实现
private string[] AAA() { string[] cs = { "a", "b", "c", "d" }; string[] ts = new string[8]; string[] ss = new string[Convert.ToInt32(Math.Pow(cs.Length, 8))]; int index = 0; for (int i_0 = 0; i_0 < cs.Length; i_0++) { for (int i_1 = 0; i_1 < cs.Length; i_1++) { for (int i_2 = 0; i_2 < cs.Length; i_2++) { for (int i_3 = 0; i_3 < cs.Length; i_3++) { for (int i_4 = 0; i_4 < cs.Length; i_4++) { for (int i_5 = 0; i_5 < cs.Length; i_5++) { for (int i_6 = 0; i_6 < cs.Length; i_6++) { for (int i_7 = 0; i_7 < cs.Length; i_7++) { ts[0] = cs[i_0]; ts[1] = cs[i_1]; ts[2] = cs[i_2]; ts[3] = cs[i_3]; ts[4] = cs[i_4]; ts[5] = cs[i_5]; ts[6] = cs[i_6]; ts[7] = cs[i_7]; ss[index++] = String.Join("-", ts); } } } } } } } } return ss; }
上面的代码显然还是可以优化的
private string[] BBB() { string[] cs = { "a", "b", "c", "d" }; int power = 8; string[] ss = new string[Convert.ToInt32(Math.Pow(cs.Length, power))]; string[] ts = new string[power]; int i = 0; int index = 0; Recur(cs, ref i, power - 1, ts, ref index, ss); return ss; } private void Recur(string[] cs, ref int i, int power, string[] ts, ref int index, string[] ss) { for (int j = 0; j < cs.Length; j++) { ts[i] = cs[j]; if (i < power) { i++; Recur(cs, ref i, power, ts, ref index, ss); } else { ss[index++] = String.Join("-", ts); } } i--; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~