(Flower and Moon)数组组合
对于2个字符,能罗列出多少种组合
先是女士的先入座,先递归FFF的,再递归FF的,最后递归F的,同理男生先入座,先递归MMM,再MM,再M的
Program.cs
class Test
{
static void Main(string[] arg)
{
var flower=new Flower();
var result=flower.Permute(3);
foreach (var item in result)
{
System.Console.WriteLine(item);
}
}
}
Flowe.cs
public class Flower
{
private IList<String> result;
public IList<String> Permute(int n)
{
result=new List<string>();
//男女
// DFS(n,1,0,"F");
// DFS(n,0,1,"M");
DFS(n,1,0,"F");
return result;
}
private void DFS(int n,int fc,int mc,string str)
{
if(fc==n&&mc==n)
{
result.Add(str);
return;
}
//有男女
// if(fc<n) DFS(n,fc+1,mc,str+"F");
// if(mc<n) DFS(n,fc,mc+1,str+"M");
//女士优先
if(fc<n) DFS(n,fc+1,mc,str+"F");
if(mc<fc) DFS(n,fc,mc+1,str+"M");
}
}

浙公网安备 33010602011771号