欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

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

程序员文章站 2022-05-05 13:46:54
...
//深度优先
类节目
{
静态无效的主要(字串[] 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;
}

}

}
}