| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1042 人关注过本帖
标题:C#中的组合问题
只看楼主 加入收藏
chenjin145
Rank: 1
等 级:禁止访问
帖 子:3922
专家分:0
注 册:2006-7-12
收藏
得分:0 
只是超過int了


效率太低就是

[url=javascript:alert(1);] [div]fdgfdgfdg\" on\"[/div] [/url]
2006-11-11 09:16
qdh
Rank: 1
等 级:新手上路
帖 子:31
专家分:0
注 册:2006-10-13
收藏
得分:0 
这样也行,但不全,能帮我修改吗
static void Main(string[] args)
{
int j = Convert.ToInt32(Console.ReadLine());
ArrayList al = new ArrayList();
//ArrayList al2 = new ArrayList();
for (int i = 0; i < j; i++)
{
al.Add(Convert.ToString(i + 1));
}
ArrayList temp = (ArrayList)al.Clone();
string str = "";
string str2 = "";
for (int i = 0; i < al.Count; i++)
{
if (i > 0)
{
str = "";
for (int x = 0; x < i; x++)
{
str += al[x];
}
}

al.RemoveRange(0,i);
str2 = "";
foreach (String m in al)
{
str2 = str + m;
Console.Write(str2 + ",");
}
Console.WriteLine(";;;");
al = (ArrayList)temp.Clone();
//i = 0;
}
Console.ReadKey();
}

[此贴子已经被作者于2006-11-11 10:08:34编辑过]

2006-11-11 10:02
chenjin145
Rank: 1
等 级:禁止访问
帖 子:3922
专家分:0
注 册:2006-7-12
收藏
得分:0 
你的外面套個遞減的循環就是了

[url=javascript:alert(1);] [div]fdgfdgfdg\" on\"[/div] [/url]
2006-11-11 10:32
qdh
Rank: 1
等 级:新手上路
帖 子:31
专家分:0
注 册:2006-10-13
收藏
得分:0 

如何加套啊?我头都晕了

2006-11-11 11:58
chenjin145
Rank: 1
等 级:禁止访问
帖 子:3922
专家分:0
注 册:2006-7-12
收藏
得分:0 

模擬遞歸

[CODE]
static void Main()
{
ArrayList al=new ArrayList(5);
al.Add("1");
al.Add("2");
al.Add("3");
al.Add("4");
result=(ArrayList)al.Clone();
Group(al);
result.Add("1234");
for(int i=0;i<result.Count;i++)
{
Console.Write(result[i]);
Console.Write(",,");
}
Console.ReadLine();
}

public static void Group(ArrayList al)
{
Stack s=new Stack(17);
ArrayList temp=new ArrayList(17);
ArrayList temp1=new ArrayList(al.Count);
string str="";
s.Push(al);
while(s.Count>0)
{
temp=(ArrayList)((ArrayList)s.Pop()).Clone();
temp1=(ArrayList)temp.Clone();
for(int i=0;i<temp1.Count;i++)
{
if(temp1.Count>1)
{
str="";
temp1.RemoveAt(i);
for(int j=0;j<temp1.Count;j++)
{
str+=temp1[j].ToString();
}
if(!result.Contains(str))
{
s.Push(temp1);
result.Add(str);
}
temp1=(ArrayList)temp.Clone();
}
}
}
}

[/CODE]

[url=javascript:alert(1);] [div]fdgfdgfdg\" on\"[/div] [/url]
2006-11-11 12:10
chenjin145
Rank: 1
等 级:禁止访问
帖 子:3922
专家分:0
注 册:2006-7-12
收藏
得分:0 
你的加套 單個元素的排列沒輸出來

[CODE]

static void Main(string[] args)
{
int j = Convert.ToInt32(Console.ReadLine());
ArrayList al = new ArrayList();
//ArrayList al2 = new ArrayList();
for (int i = 0; i < j; i++)
{
al.Add(Convert.ToString(i + 1));
}
do
{
ArrayList temp = (ArrayList)al.Clone();
string str = "";
string str2 = "";
for (int i = 0; i < al.Count; i++)
{
if (i > 0)
{
str = "";
for (int x = 0; x < i; x++)
{
str += al[x];
}
}

al.RemoveRange(0,i);
str2 = "";
if(str!="")
{
foreach (string m in al)
{
str2 = str + m;
Console.Write(str2 + ",");
}
Console.WriteLine(";;;");
}
al = (ArrayList)temp.Clone();
//i = 0;
}
al.RemoveAt(0);
}while(al.Count>1);
Console.ReadLine();
}

[/CODE]

[url=javascript:alert(1);] [div]fdgfdgfdg\" on\"[/div] [/url]
2006-11-11 12:25
skyland84
Rank: 2
等 级:新手上路
威 望:4
帖 子:544
专家分:0
注 册:2006-10-9
收藏
得分:0 

头晕~!
不发表评论~!
看看


决定人生~
2006-11-11 12:43
bygg
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:乖乖的心中
等 级:版主
威 望:241
帖 子:13555
专家分:3076
注 册:2006-10-23
收藏
得分:0 
如果量过大,用递归效率就会很底的.速度也慢.

飘过~~
2006-11-11 13:59
bygg
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:乖乖的心中
等 级:版主
威 望:241
帖 子:13555
专家分:3076
注 册:2006-10-23
收藏
得分:0 
如果量过大,用递归效率就会很底的.速度也慢.

飘过~~
2006-11-11 13:59
qdh
Rank: 1
等 级:新手上路
帖 子:31
专家分:0
注 册:2006-10-13
收藏
得分:0 
考虑到N个元素有2的N次方减1种组合,把组合序号转成二进制,根据二进制中1的位置取出数组的元素组合即可。不知以下代码与16楼chenjin145的相比,哪个更快,谁有更好的思路请拿来共享。在此再次感谢各位帮助我的人!
static void Main()
{
int j = Convert.ToInt32(Console.ReadLine());
ArrayList al = new ArrayList();
for (int i = 0; i < j; i++)
{
al.Add(Convert.ToString(i + 1));
}
Double k = Math.Pow(2, j)-1;
Int64 m = Convert.ToInt64(k);
string str = "";
string str2 = "";
for (Int64 n = 1; n <= m; n++)
{
str = Convert.ToString(n, 2);
int strL = str.Length;
str2 = "";
for (int i = 0; i < strL; i++)
{
if (str.Substring(i, 1) == "1")
{
str2 = str2 + al[i + al.Count - strL];
}
}
Console.WriteLine(str2);
}
Console.ReadKey();
}
2006-11-12 16:36
快速回复:C#中的组合问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.030548 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved