参照上个回答我整理了下代码:
以下的代码可以得到你要的结果:
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication1 { class Program { static string[] m_Data = { "1", "2", "3"}; static void Main(string[] args) { Dictionary<string, int> dic = new Dictionary<string, int>(); for (int i = 0; i < m_Data.Length - 1; i++) //这里把最后一个字符过滤掉,单独传过去 { dic.Add(m_Data[i], i); } GetString(dic, m_Data[m_Data.Length - 1]); Console.ReadLine(); } static void GetString(Dictionary<string, int> dd, string lastStr) { Dictionary<string, int> dic = new Dictionary<string, int>(); foreach (KeyValuePair<string, int> kv in dd) { if (kv.Key.Length <= lastStr.Length) { Console.WriteLine(kv.Key + lastStr); // 取单位的打印 } for (int i = kv.Value + 1; i < m_Data.Length - 1; i++) //这里把最后一个字符过滤掉 { if (kv.Key.CompareTo(m_Data[i]) <= 0) //这里判断数组的前后顺序 { Console.WriteLine(kv.Key + m_Data[i] + lastStr); dic.Add(kv.Key + m_Data[i], i); } } } if (dic.Count > 0) GetString(dic, lastStr); } } }
以上的代码需要整理,并不规范,请参照!
3q
@Diose:
{ "0", "1", "2", "3", "4", "5", "6", "7", "8", "9" }
这个打印出现问题,是控制台的设置问题。
你把打印的地方修改成这样:
Console.Write(kv.Key + lastStr); // 取单位的打印 Console.Write(" -- ");
和
Console.Write(kv.Key + m_Data[i] + lastStr); Console.Write(" -- ");
这样就可以看到你要的结果了;
至于控制台如何设置, 你在网上再查查了;
@Diose:
不过, 你这个还是存在问题, 你的字符串一定是大小顺序排列的 ?
如果不是的话, 这里需要取字符串的Key来比较, 原理是一样的。修改一下就可以了。
@静行路者:
。。控制台显示限制 我让忘了
不好意思!
static string[] m_Data = { "A", "B", "C", "D", "E" }; static void Main(string[] args) { Dictionary<string, int> dic = new Dictionary<string, int>(); for (int i = 0; i < m_Data.Length; i++) { Console.WriteLine(m_Data[i]);//如果不需要打印单元素的组合,将此句注释掉 dic.Add(m_Data[i], i); } GetString(dic); Console.ReadLine(); } static void GetString(Dictionary<string,int> dd) { Dictionary<string, int> dic = new Dictionary<string, int>(); foreach (KeyValuePair<string, int> kv in dd) { for (int i = kv.Value + 1; i < m_Data.Length; i++) { Console.WriteLine(kv.Key + m_Data[i]); dic.Add(kv.Key + m_Data[i], i); } } if(dic.Count>0) GetString(dic); }
我在网上找到了解决的你问题相似的代码
谢谢你的回答!
但是这个不符合结果;
虽然可以从结果中取出来 但是 完全不符合本意,而不是全部取出 在筛选出要用的
@Diose: 你说完全不符合,说明你没认真思考。我和楼上的答案殊途同归。