首页  >  文章  >  后端开发  >  C#1,3,5,7排列组合(3位)非递归

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

巴扎黑
巴扎黑原创
2016-12-20 09:11:281979浏览

//深度优先 
类节目 
    { 
        静态无效的主要(字串[] 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}; 
            名单的数据=新的List 的(); 
            堆栈<树>的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(名单的数据) 
        { 
            串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; 
                } 

            } 
        
        } 
    } 

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn