两两组合算法-递归实现方法
2012-02-03 11:41
405 查看
count = len(len-1)/n
arr={1,2,3}
len=3
n=2
组合的个数 count = len(len-1)/2 = 3(3-1)/2 =3
----------------------
得到的组合结果为
1,2
1,3
2,3
----------------------
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Testing
{
class Program
{
static void Main(string[] args)
{
TestDoubleComposition();
Console.ReadLine();
}
static List<string> m_list;
/// <summary>
/// 两两组合算法
/// </summary>
static void TestDoubleComposition()
{
m_list = new List<string>();
List<string> list = new List<string>();
list.Add("1");
list.Add("2");
list.Add("3");
DoubleComposition(list);
m_list.ForEach(o => {
Console.WriteLine(o);
});
}
/// <summary>
/// 两两组合算法
/// </summary>
static void DoubleComposition(List<string> arr)
{
if (arr == null || arr.Count <= 1)
return;
string str = arr.First();
arr.RemoveAt(0);
arr.ForEach(o =>
{
m_list.Add(string.Format("{0},{1}",str,o));
});
DoubleComposition(arr);
}
}
}
arr={1,2,3}
len=3
n=2
组合的个数 count = len(len-1)/2 = 3(3-1)/2 =3
----------------------
得到的组合结果为
1,2
1,3
2,3
----------------------
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Testing
{
class Program
{
static void Main(string[] args)
{
TestDoubleComposition();
Console.ReadLine();
}
static List<string> m_list;
/// <summary>
/// 两两组合算法
/// </summary>
static void TestDoubleComposition()
{
m_list = new List<string>();
List<string> list = new List<string>();
list.Add("1");
list.Add("2");
list.Add("3");
DoubleComposition(list);
m_list.ForEach(o => {
Console.WriteLine(o);
});
}
/// <summary>
/// 两两组合算法
/// </summary>
static void DoubleComposition(List<string> arr)
{
if (arr == null || arr.Count <= 1)
return;
string str = arr.First();
arr.RemoveAt(0);
arr.ForEach(o =>
{
m_list.Add(string.Format("{0},{1}",str,o));
});
DoubleComposition(arr);
}
}
}
相关文章推荐
- 两两组合算法-递归实现方法
- pinyin4j把中文句子(含有多音字字母)转成拼音(二维数组递归求所有组合情况返回list)算法实现!
- C语言经典算法(九)——递归实现二分查找的两种方法
- 组合算法的递归实现
- 背包算法递归实现,递归转动态规划的一般方法java实现
- PHP实现字符串翻转功能的方法【递归与循环算法】
- 一列数字的规则如下;1,1,2,3,5,8,13,21,34........ 求第30位数字是多少,用递规和非递归两种方法算法实现
- 基于递归思想的组合、H变换等几个算法实现
- C语言经典算法(八)——递归实现斐波那契数列的两种方法
- C语言实现的排列组合问题的通用算法、解决方法
- pinyin4j把中文句子(含有多音字字母)转成拼音(二维数组递归求所有组合情况返回list)算法实现!
- 算法学习-二叉树节点和两种实现方法,递归非递归
- 经典递归算法之排列,组合,集合和换零钱, Python yield实现.
- C语言经典算法(七)——递归实现阶乘算法的两种方法
- Golang排列组合算法问题之全排列实现方法
- 每天学习一算法系列(35)(递归和非递归俩种方法实现二叉树的前序遍历)
- 用递归法:设计算法求解汉诺塔问题,并编程实现。 (1) Hanoi(汉诺)塔问题分析 这是一个古典的数学问题,是一个用递归方法解题的典型例子。问题是这样的:古代有一个梵塔,塔内有3个座 A,B,C
- 排列组合算法的递归实现
- [算法入门]快速排序非递归方法(Java实现),大家一起来找茬啊~
- 排列和组合算法的实现方法_C语言经典案例