C#以非递归方式实现三位排列组合
本站收录这篇文章C#.NET非递归方式实现排列组合,详细解说文章中相关NET 递归 排列 技术与知识,欢迎能给大家一些在这方面的支持和帮助!下面是详细内容:C#以非递归方式实现三位排列组合,如下代码:
- //深度优先
- class Program
- {
- static void Main(string[] args)
- {
- int[] number = new int[] { 1, 3, 5, 7 };
- List data = new List();
- Stack openStack = new Stack();
- Tree root = new Tree();
- Tree parent =root;
- while (true)
- {
- if (parent.GetDeep() == 4)
- {
- parent.printf();
- }
- else
- {
- var tempSon= number.ToList();
- foreach (var item in tempSon)
- {
- Tree Node = new Tree();
- Node.NodeData = item;
- Node.Parent = parent;
- openStack.Push(Node);
- }
- }
- if (openStack.Count == 0)
- break;
- var itemData= openStack.Pop();
- parent = itemData;
- }
- System.Console.Read();
- }
- public static void printf(List data)
- {
- string d="";
- data.ForEach(p => d = d + p);
- System.Console.WriteLine(d);
- }
- }
- class Tree
- {
- public Tree Parent;
- public int NodeData;
- public List Son = new List();
- public int GetDeep()
- {
- int i=0;
- var p=this;
- while (true)
- {
- if (p == null)
- {
- return i;
- }
- else
- {
- p = p.Parent;
- i++;
- }
- }
- }
- public void printf()
- {
- string pf = "";
- var p = this;
- while (true)
- {
- if (p == null)
- {
- System.Console.WriteLine(pf);
- return;
- }
- else
- {
- if (p.NodeData != 0)
- {
- pf = p.NodeData + pf;
- }
- p = p.Parent;
- }
- }
- }
- }
- //广度优先
- class Program
- {
- static void Main(string[] args)
- {
- int[] number = new int[] { 1, 3};
- List<int> data = new List<int>();
- Stack<Tree> openStack = new Stack<Tree>();
- Queue<Tree> openQueue = new Queue<Tree>();
- Tree root = new Tree();
- Tree parent =root;
- while (true)
- {
- if (parent.GetDeep() == 4)
- {
- parent.printf();
- }
- else
- {
- var tempSon= number.ToList();
- foreach (var item in tempSon)
- {
- Tree Node = new Tree();
- Node.NodeData = item;
- Node.Parent = parent;
- // openStack.Push(Node);
- openQueue.Enqueue(Node);
- }
- }
- if (openQueue.Count == 0) //if (openStack.Count == 0)
- break;
- var itemData = openQueue.Dequeue(); //openStack.Pop();
- parent = itemData;
- }
- System.Console.Read();
- }
- public static void printf(List<int> data)
- {
- string d="";
- data.ForEach(p => d = d + p);
- System.Console.WriteLine(d);
- }
- }
- class Tree
- {
- public Tree Parent;
- public int NodeData;
- public List<Tree> Son = new List<Tree>();
- public int GetDeep()
- {
- int i=0;
- var p=this;
- while (true)
- {
- if (p == null)
- {
- return i;
- }
- else
- {
- p = p.Parent;
- i++;
- }
- }
- }
- public void printf()
- {
- string pf = "";
- var p = this;
- while (true)
- {
- if (p == null)
- {
- System.Console.WriteLine(pf);
- return;
- }
- else
- {
- if (p.NodeData != 0)
- {
- pf = p.NodeData + pf;
- }
- p = p.Parent;
- }
- }
- }
- }
相关阅读
编程教程LIST>>返回首页
相关排行总榜
ASP教程
PHP教程
.NET教程
ASP采集功能WinHttp.WinHttpRequest.5.1的
AspJpeg图片处理组件属性的详细中文使用说
通过ASP生成html纯静态页面的简单示例
ASP开发中一个把GB2312转UTF-8编码的函数
推荐几个ASP开发中常用的fso操作文件图片
ASP读取操作生成excel文件的实例代码教程
使用ASP进行网站开发防范ASP木马的10条建
通过ASP调用MSSQL数据库视图和存储过程的
通过aspupload上传组件实现的ASP实现远程
ASP调用MSSQL存储过程进行分页的两种方式
PHP解决HTTP和HTTPS跨域共享session的方法
php程序判断来访客户端是手机端还是电脑P
用PHP来获取当前页面所有url参数信息的教
配置好环境后,进行php代码调试的方法总结
教您使用php代码实现上传图片或文件到服务
PHP开发中推荐十款最出色的安全开发工具库
PHP基础学习之数组介绍
浅谈JSP与ASP.PHP的各种平台应用比较
php制作一个万年历查询的实例代码教程
制作简单安全的php验证码类代码实例
ASP.NET环境配置中几种身份验证方式及权限
记录一次对ASP.NET网站漏洞的入侵和防范教
Asp.net在mvc环境下实现上传头像加剪裁功
对 ASP.NET 异步编程的一点理解与分析
ASP.NET读取与操作Session的代码案例教程
ASP.NET将大文件数据分成较小的部分进行分
讲解.Net组件程序设计之异步调用
AS脚本与Asp.net通过UrlRequest进行前端交
一组常用的.NET命名空间中文解释
asp.net解决url地址栏传递中文参数出现乱
AspJpeg图片处理组件属性的详细中文使用说
通过ASP生成html纯静态页面的简单示例
ASP开发中一个把GB2312转UTF-8编码的函数
推荐几个ASP开发中常用的fso操作文件图片
ASP读取操作生成excel文件的实例代码教程
使用ASP进行网站开发防范ASP木马的10条建
通过ASP调用MSSQL数据库视图和存储过程的
通过aspupload上传组件实现的ASP实现远程
ASP调用MSSQL存储过程进行分页的两种方式
PHP解决HTTP和HTTPS跨域共享session的方法
php程序判断来访客户端是手机端还是电脑P
用PHP来获取当前页面所有url参数信息的教
配置好环境后,进行php代码调试的方法总结
教您使用php代码实现上传图片或文件到服务
PHP开发中推荐十款最出色的安全开发工具库
PHP基础学习之数组介绍
浅谈JSP与ASP.PHP的各种平台应用比较
php制作一个万年历查询的实例代码教程
制作简单安全的php验证码类代码实例
ASP.NET环境配置中几种身份验证方式及权限
记录一次对ASP.NET网站漏洞的入侵和防范教
Asp.net在mvc环境下实现上传头像加剪裁功
对 ASP.NET 异步编程的一点理解与分析
ASP.NET读取与操作Session的代码案例教程
ASP.NET将大文件数据分成较小的部分进行分
讲解.Net组件程序设计之异步调用
AS脚本与Asp.net通过UrlRequest进行前端交
一组常用的.NET命名空间中文解释
asp.net解决url地址栏传递中文参数出现乱