程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> .NET實例教程 >> C# 全排列算法

C# 全排列算法

編輯:.NET實例教程

實現方式:

采用插值的方法。

如:{1,2,3,4}  把2 插入到1中 得到結果為 1,2 2,1 之後采取遞歸的方式再把3 插入到 1,2 2,1 兩個數組中。。。

結果為:

4 3 2 1,3 4 2 1,3 2 4 1,3 2 1 4
4 2 3 1,2 4 3 1,2 3 4 1,2 3 1 4
4 2 1 3,2 4 1 3,2 1 4 3,2 1 3 4
4 3 1 2,3 4 1 2,3 1 4 2,3 1 2 4
4 1 3 2,1 4 3 2,1 3 4 2,1 3 2 4
4 1 2 3,1 4 2 3,1 2 4 3,1 2 3 4

代碼如下:

  /// <summary>
  /// 插入對象v到對象數組o中
  /// </summary>
  /// <param name="o">目標對象數組</param>
  /// <param name="v">插入值</param>
  /// <param name="lb">展現控件</param>
  /// <param name="size">源數組的長度,判斷何時對展現控件賦值</param>
  /// <returns>查數之後的結果集</returns>
  public string[] insertVal(object [] o,object v,ListBox lb,int size)
  {
   int len=o.Length ;
   object[] tep=new object[len+1];
   string [] result=new string[len+1];

   for(int i=0;i<len+1;i++)
   {
    for(int j=0;j<len;j++)
    {
     tep[j]=o[j];
    }
    
    moveVal(ref tep,i,len);
    tep[i]=v;

    string s="";
    for (int k = 0; k<len+1;k++)
    {
     s=s+tep[k]+" ";
    }
    s=s.Substring(0,s.Length-1);
    
    if(tep.Length==size)
     lb.Items.Add(s);

    result[i]=s;
   }
   return result;   

  }

  /// <summary>
  /// 移動數組,起始位置數據依次順移到截止位置
  /// </summary>
  /// <param name="o">源數組</param>
  /// <param name="start">起始位置</param><

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved