这题代码该怎么写?求思路

图片说明

拿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 . . .