寻求一个算法,把自己绕晕了..

cwchyt 2009-02-16 06:43:28
假设有五个字符串:A,B,C,D,E

一、按顺序组成任意的组合
如:ABCDE,ABCD,ABC,AB
BCDE,BCD,BC
CDE,CD
DE

二、任意组合
如:ABCDE,ABCD,ABC,AB,ACDE,ADE,AE,ADE,AD,AE
BCDE,BCD,BC,BDE,BD,BE
......

最好写出代码,谢谢
...全文
1167 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
EvanBlackYou 2011-06-03
  • 打赏
  • 举报
回复
static void Main(string[] args)
{
string[] array = new string[] { "A", "B", "C", "D", "E" };
//int s = array.Length;
for (int j = 0; j < 4; j++)
{
for (int s = array.Length; s >= 2+j; s--)
{
for (int i = j; i < s; i++)
{
Console.Write(array[i]);
}
Console.WriteLine();
}
}
Console.ReadLine();
}


随便写的一个练练手,效率不是很高
EvanBlackYou 2011-06-03
  • 打赏
  • 举报
回复

static void Main(string[] args)
{
string[] array = new string[] { "A", "B", "C", "D", "E" };
//int s = array.Length;
for (int j = 0; j < 4; j++)
{
for (int s = array.Length; s >= 2+j; s--)
{
for (int i = j; i < s; i++)
{
Console.Write(array[i]);
}
Console.WriteLine();
}
}
Console.ReadLine();
}
huangzi1990 2010-07-17
  • 打赏
  • 举报
回复
偶是新手,只能过来看看啊,学习学习,你们都好棒
sasgsc 2010-07-17
  • 打赏
  • 举报
回复
1数组,从尾巴上砍掉一个元素,循环到数组长为2,再砍掉第一个元素,执行砍尾巴循环,到2.

2循环每个元素,随机判断是否要注入新的数组.
PopKaven 2009-02-19
  • 打赏
  • 举报
回复
java版的。产生元素不重复,只考虑实现,效率和资源消耗未比较
http://blog.csdn.net/PopKaven/archive/2008/11/25/3369939.aspx
firePhoenix1981 2009-02-18
  • 打赏
  • 举报
回复
四楼只是实现了第一个要求
春天的气息 2009-02-18
  • 打赏
  • 举报
回复

static string[] m_Data = { "A", "B", "C", "D", "E" };

static void Main(string[] args)
{
for (int i = 0; i < m_Data.Length; i++)
{
for (int j = i + 1; j < m_Data.Length; j++)
{
OutPut(i, j);
}
}
}

private static void OutPut(int i, int j)
{
string temp = string.Empty;
for (int k = i; k <= j; k++)
{
temp += m_Data[k];
}
Console.WriteLine(temp);
}


顶,借4楼的



欢迎加入我的程序设计QQ群80532706哟
Dhoopu 2009-02-18
  • 打赏
  • 举报
回复
http://topic.csdn.net/u/20090217/21/f41ed9f6-f929-451c-a5c9-80d2e408422a.html?seed=1518523311
supremeholy 2009-02-18
  • 打赏
  • 举报
回复
sunchaohuang 2009-02-18
  • 打赏
  • 举报
回复
顶~
wengjj1985 2009-02-18
  • 打赏
  • 举报
回复
学习下顺便自己也写个算法试试
浪子-无悔 2009-02-18
  • 打赏
  • 举报
回复
感觉写的都行,但是4楼的理解起来比较容易。。顶```````````
悔说话的哑巴 2009-02-18
  • 打赏
  • 举报
回复
static string[] m_Data = { "A", "B", "C", "D", "E" };

static void Main(string[] args)
{
for (int i = 0; i < m_Data.Length; i++)
{
for (int j = i + 1; j < m_Data.Length; j++)
{
OutPut(i, j);
}
}
}

private static void OutPut(int i, int j)
{
string temp = string.Empty;
for (int k = i; k <= j; k++)
{
temp += m_Data[k];
}
Console.WriteLine(temp);
}
止戈而立 2009-02-17
  • 打赏
  • 举报
回复
        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++)
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);
}
ycsno1 2009-02-16
  • 打赏
  • 举报
回复
顶楼上的以及楼上的楼上的!
止戈而立 2009-02-16
  • 打赏
  • 举报
回复
我写个更简单的:
static string[] m_Data = { "A", "B", "C", "D", "E" };

static void Main(string[] args)
{
for (int i = 0; i < m_Data.Length; i++)
{
for (int j = i + 1; j < m_Data.Length; j++)
{
OutPut(i, j);
}
}
}

private static void OutPut(int i, int j)
{
string temp = string.Empty;
for (int k = i; k <= j; k++)
{
temp += m_Data[k];
}
Console.WriteLine(temp);
}
ztenv 2009-02-16
  • 打赏
  • 举报
回复
class StringCombin
{
string[] m_Data = { "A", "B", "C", "D", "E" };

public void Run()
{
for (int i = 0; i < m_Data.Length; i++)
{
for (int j = 0; j < m_Data.Length - i; j++)
{
if (j + i != m_Data.Length-1)
{
Console.WriteLine(m_Data[i] + Marshal(i, j));
}
}
}
}

private string Marshal(int i,int k)
{

string temp = "";
for (int j =i+1; j < m_Data.Length-k; j++)
{
temp += m_Data[j];
}
return temp;
}

public string[] Data
{
get
{
return m_Data;
}
}
}

晚上加班,闲来无事,练练手,
jsstb 2009-02-16
  • 打赏
  • 举报
回复
编程的人应该有很强的逻辑思维能力,对付排列组合应该不成问题
whoami333 2009-02-16
  • 打赏
  • 举报
回复
排列组合么,呵呵,翻翻课本看啦。

:)

110,577

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧