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

C#获取二维数组组合

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
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代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
<%@ 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="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>

 

posted @   飞花雪月  阅读(808)  评论(0编辑  收藏  举报
编辑推荐:
· 从二进制到误差:逐行拆解C语言浮点运算中的4008175468544之谜
· .NET制作智能桌面机器人:结合BotSharp智能体框架开发语音交互
· 软件产品开发中常见的10个问题及处理方法
· .NET 原生驾驭 AI 新基建实战系列:向量数据库的应用与畅想
· 从问题排查到源码分析:ActiveMQ消费端频繁日志刷屏的秘密
阅读排行:
· 《HelloGitHub》第 108 期
· Windows桌面应用自动更新解决方案SharpUpdater5发布
· 我的家庭实验室服务器集群硬件清单
· C# 13 中的新增功能实操
· Supergateway:MCP服务器的远程调试与集成工具
点击右上角即可分享
微信分享提示