当前位置: 代码迷 >> ASP.NET >> 有六个数(一、2、2、3、4、5),列出所有组合,4不能在第三位,3与5不相连
  详细解决方案

有六个数(一、2、2、3、4、5),列出所有组合,4不能在第三位,3与5不相连

热度:9861   发布时间:2013-02-25 00:00:00.0
有六个数(1、2、2、3、4、5),列出所有组合,4不能在第三位,3与5不相连
如题

------解决方案--------------------------------------------------------
6个数的排列数 减 (5个数的排列数+ 2*5个数的排列数)
加 2*4个数的排列数


1. 6个数的排列数表示6个数字全排得到一个数字假设为A66;
2. 5个数的排列数表示第3位被数字4点位后,剩下的5个数的排列数,假设为A45;
3. 2*5个数的排列数表示,3和5相连有两个情况,35和53,此时35或53表示一位数,与剩下的4位进行排列,假设结果为A35; 
4. 由于2跟3两种情况有重复的,所以要加上2和3里重复的;重复部分为4占了第3位后,35或53与剩下的3位数字的全排列,假设结果命令为A23;
5. 那么结果就是 A66-A45-A35+A23; 

不知道这样对不对。希望能帮到楼主
------解决方案--------------------------------------------------------
C# code
using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace ConsoleApplication1{    class Program    {        static void Main(string[] args)        {            List<int> source = new List<int>() { 1, 2, 2, 3, 4, 5 };            var query = source.Arrange().Where(x => x[2] != 4 && !string.Join("", x.ToArray()).Contains("35") && !string.Join("", x.ToArray()).Contains("53"));            foreach (var item in query)            {                Console.WriteLine(string.Join(", ", item.ToArray()));            }        }    }    static class ArrangeHelper    {        private static List<List<int>> Arrange(int n)        {            var result = Enumerable.Range(0, n).Select(x => new List<int>() { x }).ToList();            while (result[0].Count < n)            {                result = result.SelectMany(x => Enumerable.Range(0, n).Except(x).Select(y => x.Concat(new List<int>() { y }).ToList())).ToList();            }            return result;        }        public static IEnumerable<List<T>> Arrange<T>(this List<T> source)        {            return Arrange(source.Count).Select(x => x.Select(y => source[y]).ToList());        }    }}
------解决方案--------------------------------------------------------
如果求数目
A66 / 2 - 60 - A55(5/6)
------解决方案--------------------------------------------------------
算错了 -A55(4/6)
头疼
------解决方案--------------------------------------------------------
回溯
  相关解决方案