排列組合算法


如何計算得到:0~9十個數字選2的 45種排列組合

9 个解决方案

#1


for循環嵌套

#2


IEnumerable<int[]> foo()
{
    for (int i = 0; i < 10; i++)
        for (int j = i + 1; j < 10; j++)
            yield return new int[] { i, j };
}

void Main()
{
foreach (var item in foo())
{
    ...
}
}

#3


for(int i=1;i<=9;i++)
 for(int j=i+1;j<=9;j++)
    Console.WriteLine("{0},{1}",i,j);

#4


用組合公式算吧:

[img=http://latex.codecogs.com/gif.latex?\large%20\dpi{200}%20C=\frac{10!}{2!\times(10-2)!}][/img]

#5


引用 4 樓  的回復:
用組合公式算吧:


這是得到排列組合的個數,它可沒有得到任何一個排列組合結果。

#6





public static List<string> P(string s)
        {
            if (s.Length==1)
            {
                List<string> r = new List<string>();
                r.Add("");
                r.Add("a");
                return r;
            }
            else
            {
                List<string> tmp = P(s.Substring(0, s.Length - 1));
                List<string> ret=new List<string>();
                foreach (string t in tmp)
                {
                    ret.Add(t);
                }

                foreach (string t in tmp)
                {
                    for (int len = t.Length; len >=0; len--)
                    {
                        string insert = t;
                        insert=insert.Insert(len, s[s.Length - 1].ToString());
                        ret.Add(insert);
                    }
                }
                return ret;
            }
        }





List<string> ret = P("abcdefghij");
            Dictionary<int, string> dic = new Dictionary<int, string>();
            foreach (string s in ret)
            {
                try
                {
                    dic.Add(s.GetHashCode(), s);
                }
                catch
                {
                    MessageBox.Show(s + "_" + dic[s.GetHashCode()]);
                }
            }



這個是全排列,改改就滿足需求了

#7


http://blog.csdn.net/peng_weida/article/details/7756093

#8


簡單:
for(int i=0;i<10;i+=)
{
for (int j=0;j<10;j++)
{
print(i);
print(j);
print(\n);
}
}

#9


引用 2 樓  的回復:
IEnumerable<int[]> foo()
{
    for (int i = 0; i < 10; i++)
        for (int j = i + 1; j < 10; j++)
            yield return new int[] { i, j };
}

void Main()
{
foreach (var item in foo())……


這個明白了,謝謝老師

注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2021 ITdaan.com