拿C#简单写一个吧,算出来结果2520
其实也就是不重复字符的个数的阶乘。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Q1064310
{
class Program
{
static IEnumerable<string> foo(string seed, List<string> remain)
{
if (remain.Count == 0)
{
yield return seed;
}
else
{
for (int i = 0; i < remain.Count; i++)
{
var newlist = remain.ToList();
string s = newlist[i];
newlist.RemoveAt(i);
foreach (var item in foo(seed + s, newlist))
yield return item;
}
}
}
static void Main(string[] args)
{
string s = "LANQIAO";
var query = foo("", s.Select(x => x.ToString()).ToList()).Distinct();
foreach (var item in query)
{
Console.WriteLine(item);
}
Console.WriteLine("total: {0}", query.Count());
}
}
}
....前面省略
OINAALQ
OINAAQL
OINQLAA
OINQALA
OINQAAL
OIQLANA
OIQLAAN
OIQLNAA
OIQALNA
OIQALAN
OIQANLA
OIQANAL
OIQAALN
OIQAANL
OIQNLAA
OIQNALA
OIQNAAL
total: 2520
Press any key to continue . . .