zoukankan      html  css  js  c++  java
  • C#全排列

    C#写个全排列数组,例如{123}采用递归方法:有两种方式,

    1)逐个增加数字:

     

    代码
           int[] a = new int[3] { 123 };
            
    private void button1_Click(object sender, EventArgs e)
            {
                
    for (int i = 0; i < 3; i++)
                {
                    
    string b;

                    b 
    = a[i].ToString();
                    count(b, 
    1);
                }
            }
            
    private void count(string numarray, int n)
            {
                
    if (n < 3)
                {
                    
    for (int i = 0; i < 3; i++)
                    {
                        
    string aa = a[i].ToString();

                        
    if (!numarray.Contains(aa)) //如果不包含这个数字,添加这个数字到数组
                        {
                            
    string tempstring = numarray;
                            numarray 
    = numarray + aa;
                            n
    ++;
                            count(numarray, n);
                            
    //递归完,注意恢复数组原样!!!!!!!!
                            numarray = tempstring;
                            n
    --;
                        }
                    }
                }
                
    else//n=3,打印输出
                {
                    print(numarray);
                }
            }

    2)通过交换数组中的元素:

    代码
           int[] a = new int[3] { 1, 2, 3 };
            private void button2_Click(object sender, EventArgs e)
            {
                perm(a, 
    02);
            }
            
    private void perm(int[] list, int i, int n)
            {
                
    int j;

                
    if (i == n)
                {
                    listprint(list);//
    打印其中一种排列组合
                }
                
    else
                {
                    
    for (j = i; j <= n; j++)
                    {
                        SWAP(
    ref list[i], ref list[j]);
                        perm(list, i 
    + 1, n);
                        SWAP(
    ref list[i], ref list[j]);//数组一定要复原!!!!!
                    }
                }
            }
            
    private void SWAP(ref int a, ref int b)
            {
                
    int c = a;
                a 
    = b;
                b 
    = c;
            }
  • 相关阅读:
    ASSIC码对照表
    IIS注册 net环境
    Remoting1
    WinCE API
    【可下载】C#中关于zip压缩解压帮助类的封装
    【原创,提供下载】winfrom 打印表格,字符串的封装
    一个可编辑div中粘贴内容时过滤掉粘贴内容的一些特殊的样式或者标签
    限制一个文本框只能输入数字以及限制最大只能输入的数字
    文本框中有默认的文字,写获取焦点和失去焦点的文字显示与消失的效果
    鼠标滑过图片变大,移开还原大小的动画效果
  • 原文地址:https://www.cnblogs.com/king1302217/p/1641295.html
Copyright © 2011-2022 走看看