一个算法的问题,请指教 不想了,感觉的可用递归,n个数的组合可以拆为n-1的组合加上n-1的组合配上一个数字n,这样的话做一个返回组和指针的地归函数fun(n),n不为1的时候用n和fun(n-1)返回的组合构成新的组合,当n为1的时候返回一个只有1的组合。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 string[] a={"1","2","3","4"}; private void button1_Click(object sender, System.EventArgs e) { for(int i=1;i<=a.Length;i++) { BuildNum(i,0,""); } } private void BuildNum(int level,int start,string num) { string num1; for(int i=start;i<a.Length;i++) { num1=num+a[i]; if(level==1) { listBox1.Items.Add(num1); } else { BuildNum(level-1,i+1,num1); } } } //没事 就 写了下,类型用的是 string ,你可以自己改下,返回的建议用StringBuilder,不然很慢!using System;using System.Text;namespace suanfa{ /// <summary> /// Class1 的摘要说明。 /// </summary> class Class1 { static StringBuilder num(string[] feng,int numlength) { StringBuilder strn=new StringBuilder(); if(numlength==0) return strn; for(int i=0;i<feng.Length;i++) { if(numlength==1) { strn.Append(feng[i].ToString()+","); } else { string temp=num(feng,numlength-1).ToString(); string[] n_1=temp.Split(','); for(int ii=0;ii<n_1.Length-2;ii++) { if(n_1[ii]!=feng[i] && n_1[ii].IndexOf(feng[i])==-1) { strn.Append(feng[i]+n_1[ii]+","); strn.Append(n_1[ii]+feng[i]+","); } } } } return strn; } /// <summary> /// 应用程序的主入口点。 /// </summary> [STAThread] static void Main(string[] args) { string[] feng={"1","2","3","4","5","6"}; int length=feng.Length; for(int i=1;i<=length;i++) { Console.WriteLine("取{0}位数组合,按任意键开始",i); Console.ReadLine(); Console.WriteLine(num(feng,i).ToString()); Console.WriteLine(""); } Console.ReadLine(); } }} 如何调用 sealed 类 VB.Net与C#中自动生成的私有变量 WebBrowser不支持KeyPress事件,怎么办? 延迟函数,让程序延迟再执行,请高手,马上结贴 =======================大家帮我看看这个让我头疼的代码!!! 这个程序的删除事件和打印实践怎么写? 高手们,请满足下我求知的欲望(初学者,还望多多指教) C# 调用DEPHIL DLL问题 【急求】C#调用C++动态链接库库问题 按钮为什么不能转换。。。。。。。。???? WinForm: 为何在MDI子窗体内容执行this.close()没有关闭窗体? 求教!关于简易3D引擎的制作。谢谢大家帮忙。
{
for(int i=1;i<=a.Length;i++)
{
BuildNum(i,0,"");
}
} private void BuildNum(int level,int start,string num)
{
string num1;
for(int i=start;i<a.Length;i++)
{
num1=num+a[i];
if(level==1)
{
listBox1.Items.Add(num1);
}
else
{
BuildNum(level-1,i+1,num1);
}
}
}
//没事 就 写了下,类型用的是 string ,你可以自己改下,返回的建议用StringBuilder,不然很慢!
using System;
using System.Text;namespace suanfa
{
/// <summary>
/// Class1 的摘要说明。
/// </summary>
class Class1
{
static StringBuilder num(string[] feng,int numlength)
{
StringBuilder strn=new StringBuilder();
if(numlength==0)
return strn;
for(int i=0;i<feng.Length;i++)
{
if(numlength==1)
{
strn.Append(feng[i].ToString()+","); }
else
{
string temp=num(feng,numlength-1).ToString();
string[] n_1=temp.Split(',');
for(int ii=0;ii<n_1.Length-2;ii++)
{
if(n_1[ii]!=feng[i] && n_1[ii].IndexOf(feng[i])==-1)
{
strn.Append(feng[i]+n_1[ii]+",");
strn.Append(n_1[ii]+feng[i]+",");
}
}
}
}
return strn;
}
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main(string[] args)
{
string[] feng={"1","2","3","4","5","6"};
int length=feng.Length;
for(int i=1;i<=length;i++)
{
Console.WriteLine("取{0}位数组合,按任意键开始",i);
Console.ReadLine();
Console.WriteLine(num(feng,i).ToString());
Console.WriteLine("");
}
Console.ReadLine();
}
}
}