您好,欢迎访问一九零五行业门户网

C#1,3,5,7排列组合(3位)非递归

//深度优先 
类节目 
    { 
        静态无效的主要(字串[] args) 
        { 
            int []号= int新[] {1,3,5,7}; 
            列表数据=新名单(); 
            堆栈的openstack =新的堆栈(); 
            树根=新树(); 
            树父=根; 
            而(真) 
            {
如果(parent.getdeep()== 4) 
                { 
                    parent.printf();

                其他 
                { 
                   var tempson = number.tolist(); 
                   的foreach(在tempson var项) 
                   { 
                       )树节点=新树(; 
                       node.nodedata =项目; 
                       node.parent =父母; 
                       openstack.push(节点); 
                   } 
                } 
               如果(openstack.count == 0)[颜色= darkred] [/ color] 
                    突破; 
               变种的itemdata = openstack.pop(); 
               父=的itemdata;

            system.console.read();

        公共静态无效的printf(列表数据) 
        { 
            串d ="英寸; 
            data.foreach(p值= d 1和d = d + p); 
            的system.console.writeline(d); 
        } 
    } 
    类树 
    { 
        公共树父; 
        公众诠释nodedata; 
        公开名单的儿子=新名单(); 
        公众诠释getdeep() 
        { 
            int i = 0; 
              var p =这一点; 
            而(真) 
            { 
                如果(p == null) 
                { 
                    回报我; 
                } 
                否则 
                { 
                    p = p.parent; 
                    我++;
}
}

        公共无效的printf() 
        { 
            字符串pf ="英寸; 
            var p =这一点; 
            而(真) 
            { 
                如果(p == null) 
                { 
                    的system.console.writeline(pf); 
                    返回; 
                } 
                否则 
                { 
                    如果(p.nodedata!= 0) 
                    { 
                        pf = p.nodedata + pf; 
                    } 
                    p = p.parent; 
                } 
            }

    } 
//广度优先 
类节目 
    { 
        静态无效的主要(字串[] args) 
        { 
            int []号= int新[] {1,3}; 
            名单<int>的数据=新的list <int>的(); 
            堆栈<树>的openstack =新的堆栈<树>(); 
            队列<树> openqueue =新队列<树>();
树根=新树(); 
            树父=根; 
            而(真) 
            {
如果(parent.getdeep()== 4) 
                { 
                    parent.printf();

                其他 
                { 
                   var tempson = number.tolist(); 
                   的foreach(在tempson var项) 
                   { 
                       )树节点=新树(; 
                       node.nodedata =项目; 
                       node.parent =父母; 
                      // openstack.push(节点); 
                       openqueue.enqueue(节点); 
                   } 
                } 
                如果(openqueue.count == 0)//如果(openstack.count == 0) 
                    打破; 
               变种的itemdata = openqueue.dequeue(); //openstack.pop(); 
               父=的itemdata;

            system.console.read();
}
公共静态无效的printf(名单<int>的数据) 
        { 
            串d =“”; 
            data.foreach(p => d = d + p); 
            的system.console.writeline(d); 
        }

    类树 
    { 
        公共树父; 
        公众诠释nodedata; 
        公开名单<树>儿子=新的list <树>(); 
        公众诠释getdeep() 
        { 
            int i = 0; 
              var p =这一点; 
            而(真) 
            { 
                如果(p == null) 
                { 
                    回报我; 
                } 
                否则 
                { 
                    p = p.parent; 
                    我++;
}
}

        公共无效的printf() 
        { 
            字符串pf =“”; 
            var p =这一点; 
            而(真) 
            { 
                如果(p == null) 
                { 
                    的system.console.writeline(pf); 
                    返回; 
                } 
                否则 
                { 
                    如果(p.nodedata!= 0) 
                    { 
                        pf = p.nodedata + pf; 
                    } 
                    p = p.parent; 
                }
}

    }
其它类似信息

推荐信息