首页 > 代码库 > C#/JS 获取二维数组组合

C#/JS 获取二维数组组合

C#获取二维数组组合

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Web;using System.Web.UI;using System.Web.UI.WebControls;namespace HF.SHOP.WebSite{    public partial class Demo : System.Web.UI.Page    {        List<List<string>> P_StringLL = new List<List<string>>();        List<string> P_tmpStrL = new List<string>();        protected void Page_Load(object sender, EventArgs e)        {            List<string> al = new List<string>();            al.Add("红色");            al.Add("黑色");            al.Add("紫色");            al.Add("白色");            P_StringLL.Add(al);            al = new List<string>();            al.Add("小号");            al.Add("中号");            al.Add("大号");            al.Add("加大号");            P_StringLL.Add(al);            al = new List<string>();            al.Add("男同志");            al.Add("女同志");            P_StringLL.Add(al);            GroupArray("", P_StringLL, 0);            StringBuilder sb = new StringBuilder();            foreach (string  str in P_tmpStrL)            {                sb.AppendLine(str + "<br/>");            }            Label1.Text = "总共有:" + P_tmpStrL.Count.ToString() + "种组合";            Label2.Text = sb.ToString();        }        //组合计算        void GroupArray(string tmpStr, List<List<string>> strLL, int index)        {            int count = strLL.Count;            if (count <= index)            {                if (tmpStr.Length > 0)                {                    P_tmpStrL.Add(tmpStr);                }                return;            }            List<string> strL = strLL[index];            foreach (string str in strL)            {                GroupArray(tmpStr + str, strLL, index + 1);            }        }    }}

 

 

JS代码:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Demo.aspx.cs" Inherits="HF.SHOP.WebSite.Demo" %><!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml"><head runat="server"><meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>    <title></title>    <script src="http://www.mamicode.com/UIResources/scripts/jquery.min.2.0.0.js"></script></head><body>    <form id="form1" runat="server">    <div>        <asp:Label ID="Label1" runat="server" Text=""></asp:Label><br />        <asp:Label ID="Label2" runat="server" Text=""></asp:Label>                <div id="cou"></div>        <ul id="list">        </ul>    </div>    </form>    <script type="text/javascript">        var array = [[‘红色‘, ‘黑色‘, ‘白色‘], [‘小号‘, ‘中号‘, ‘加大‘], [‘男‘, ‘女‘]];        var results = new Array(); //创建一个数组        var len = array.length;        var indexs = {};        $(document).ready(function () {            GetResults(-1);            $("#cou").html("共有" + results.length + "种组合;<br/>");            for (var a = 0; a < results.length; a++)            {                $("#list").append("<li>" + results[a] + "</li>");            }        });        function GetResults(start) {            start++;            if (start > len - 1) {                return;            }            if (!indexs[start]) {                indexs[start] = 0;            }            if (!(array[start] instanceof Array)) {                array[start] = [array[start]];            }            for (indexs[start] = 0; indexs[start] < array[start].length; indexs[start]++) {                GetResults(start);                if (start == len - 1) {                    var temp = [];                    for (var i = len - 1; i >= 0; i--) {                        if (!(array[start - i] instanceof Array)) {                            array[start - i] = [array[start - i]];                        }                        temp.push(array[start - i][indexs[start - i]]);                    }                    results.push(temp);                }            }        }    </script></body></html>

 

C#/JS 获取二维数组组合