求一递归问题! 一个数组由4个不同的字符排列,请问该数组为n位长时候,如何把所有的排列显示出来?例如:有16种可能。a,b,c,d……d,d,d,d 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 static Char[] char4 = {'a', 'b', 'c', 'd'}; static void disp(string prefix, int len) { if (len == 0) { Console.WriteLine(prefix); return; } for (int i = 0; i < 4; ++i ) { disp(prefix + char4[i], len - 1); } } disp("", n); 你的问题反正是相邻4位代表一个组合重复的不计对吧?每位取4位长的子串用arraylist判断是否是重复的 不重复就放进来最后输出例如 asdfdsafasdfsdasdfasfsdasffsadasfasfasdafasfasdafsdasda只包含4个字符 asdf从头开始取4位子串 asdf sdfd ......是这意思吗? using System;namespace Cdefault{ class MainClass { public static void Main(string[] args) { char[] s=new char[]{'1','2','3','4'}; print(s); Console.Read(); Console.WriteLine("Hello World!"); } public static void print(char[] ary) { if(ary.Length==1) { for(int i=0;i<ary.Length;i++) Console.Write(ary[i]); Console.Write("\n"); return; } int index=0; char tmp; char[] tmpary=(char[])ary.Clone(); while(true) { for(int i=0;i<tmpary.Length;i++) Console.Write(tmpary[i]); Console.Write("\n"); tmp=tmpary[index]; if((index+1)==tmpary.Length) { tmpary[index]=tmpary[0]; tmpary[0]=tmp; index=0; } else { tmpary[index]=tmpary[index+1]; tmpary[index+1]=tmp; index++; } bool isover=true; for(int i=0;i<tmpary.Length;i++) { if(tmpary[i]!=ary[i])isover=false; } if(isover)break; } } }} 如何初始化泛型类中的泛型对象 如何自动停止超过一段时间还没有响应的正则 对委托和事件的疑问,请赐教!谢谢 如何获取多表查询的表结构信息? c#窗体怎么才能设置成透明和半透明?--在线等... 急........ 如何提取某个WEB页面表格中的数据 200分 c#+ado.net问题!请帮帮忙,请进!!! emit动态生成派生类,属性的访问不正确 小问题在线等,如何声明一个可以跨文件使用(在同一个解决方案里)的全局变量? 关于数组的问题。 VC++t和.NET的疑惑,请大家解答一下 尝试读取或写入受保护的内存,这通常指示其他内存已损坏?
static void disp(string prefix, int len)
{
if (len == 0)
{
Console.WriteLine(prefix);
return;
} for (int i = 0; i < 4; ++i )
{
disp(prefix + char4[i], len - 1);
}
} disp("", n);
反正是相邻4位代表一个组合
重复的不计
对吧?
每位取4位长的子串
用arraylist判断是否是重复的 不重复就放进来
最后输出例如 asdfdsafasdfsdasdfasfsdasffsadasfasfasdafasfasdafsdasda
只包含4个字符 asdf
从头开始取4位子串 asdf sdfd ......
是这意思吗?
using System;namespace Cdefault
{
class MainClass
{
public static void Main(string[] args)
{
char[] s=new char[]{'1','2','3','4'};
print(s);
Console.Read();
Console.WriteLine("Hello World!");
}
public static void print(char[] ary)
{
if(ary.Length==1)
{
for(int i=0;i<ary.Length;i++)
Console.Write(ary[i]);
Console.Write("\n");
return;
}
int index=0;
char tmp;
char[] tmpary=(char[])ary.Clone();
while(true)
{
for(int i=0;i<tmpary.Length;i++)
Console.Write(tmpary[i]);
Console.Write("\n");
tmp=tmpary[index];
if((index+1)==tmpary.Length)
{
tmpary[index]=tmpary[0];
tmpary[0]=tmp;
index=0;
}
else
{
tmpary[index]=tmpary[index+1];
tmpary[index+1]=tmp;
index++;
}
bool isover=true;
for(int i=0;i<tmpary.Length;i++)
{
if(tmpary[i]!=ary[i])isover=false;
}
if(isover)break;
}
}
}
}