using System;
 using System.Collections.Generic;
 using System.Linq;
 using System.Text;

 namespace ConsoleApp1 {
     class Program {
         static void Main(string[] args) {

             // 防止出现随机值无法组合
             ) {

                 Con = ;
                 // 初始化数组长度
                 ;
                 Arr = new int[Len];
                 Temp = new int[Con];

                 // 最小的数
                 ) * Con / ;
                 // 最大的数
                  + Len) * Con / ;
                 // 获取范围内的一个随机数
                 Random random = new Random();
                 Sum = random.Next(Min, Max + );

                 //
                 GetConNum(, );
             }

             Console.WriteLine(Sum);
             Console.WriteLine(ResDic.Count);

             //for (int i = 0; i < ResDic.Count; i++) {
             //    Console.WriteLine(ResDic[i]);
             //}

             Console.ReadLine();
         }

         /// <summary>
         /// 用于存储所有结果
         /// </summary>
         private static Dictionary<int, string> ResDic = new Dictionary<int, string>();
         /// <summary>
         /// 用于取值
         /// </summary>
         private static int[] Arr;
         /// <summary>
         /// 用于存值
         /// </summary>
         private static int[] Temp;
         /// <summary>
         /// 要取的数字个数
         /// </summary>
         private static int Con;
         /// <summary>
         /// 总和
         /// </summary>
         private static int Sum;

         /// <summary>
         /// 在Arr中取Con个不重复的数字
         /// </summary>
         /// <param name="index"></param>
         /// <param name="init"></param>
         private static void GetConNum(int index, int init) {

             if (index >= Con) {
                 // 计算这些数字的和
                 ;
                 ; i < Temp.Length; i++)
                     Tsum += Temp[i];

                 // 若和与Sum相同,全排列存入所有排列可能
                 if (Tsum == Sum)
                     ListArray();

                 return;
             }

             for (int i = init; i < Arr.Length; i++) {
                 Temp[index] = i;
                 GetConNum(index + , i + );
             }
         }

         /// <summary>
         /// 对数组Temp进行全排列
         /// </summary>
         /// <param name="index"></param>
         private static void ListArray(int index) {
             // 一次排列结束后
             if (index >= Temp.Length) {
                 // 取出当前的排列结果,拼成字符串
                 string str = "";
                 ; i < Temp.Length; i++) {
                     str += Temp[i];
                     )
                         str += ",";
                 }
                 // 将结果存入字典
                 ResDic.Add(ResDic.Count, str);
                 return;
             }

             int t = Temp[index];

             // 交换位置
             for (int i = index; i < Temp.Length; i++) {
                 Temp[index] = Temp[i];
                 Temp[i] = t;
                 ListArray(index + );

             // 还原
                 Temp[i] = Temp[index];
                 Temp[index] = t;

             }
         }
     }
 }

在0~N个数字中,取指定个数的不重复数字,要求这些数字的和为指定值,求所有结果的更多相关文章

  1. 找出n个自然数(1,2,3,……,n)中取r个数的组合

    <?php /** * 对于$n和$r比较小, 可以用这种方法(当n=5, r=3时) */ function permutation1($n, $r) { for($i=1; $i<=$ ...

  2. IGeometry 中取指定的点

    private static IGeometryCollection MakeMultiPoint(IGeometry geometry,int pointcount) {          IGeo ...

  3. js指定范围指定个数的不重复随机数

    今天偶然看到的 比如要生成 1-100范围之内的10个不重复随机数,代码就可以这么写 var arr = []; for (var i = 1; i <=100; i++) { arr.push ...

  4. 在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 例如,如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是重复的数字2或者3

    // test14.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include<iostream> #include< ...

  5. 从list中取N个随机生成一个集合

    在工作中发现有很多有序算法,较少见到一些可用的无序随机算法.无序随机算法的目的是让客户感觉每次都不一样,因为一直看一样的会审美疲劳哈. 在jdk自带一种CollectionUtils.shuffle& ...

  6. 使用回溯法求所有从n个元素中取m个元素的组合

    不多说了,直接上代码,代码中有注释,应该不难看懂. #include <stdlib.h> #include <stdio.h> typedef char ELE_TYPE; ...

  7. SQL Server 从一组数字中随机获取一个数

    很多人在开发需求中想获取一个随机数,或者从一组数字中获取一个数, 这个需求很简单,而且有很多方式可以实现,下面就介绍几种常见的方式,以作为笔记或供有需要的人参考. 比如有一组数字: 57 59 63 ...

  8. Lua在给定范围内,生成指定个数不重复随机数组

    本篇主要是参考 lua连续随机数 这篇文章完成.大家可以去原贴查看学习. 生成随机数组,暂时发现两种方法 1.把生成的数放到一个表里面,每次随机时判断这个表里是否有,若有再随机一次(问了朋友,很多人都 ...

  9. mysql中整数类型后面的数字,是不是指定这个字段的长度?比如int(11),11代表11个字节吗?

    原文地址:    http://www.cnblogs.com/stringzero/p/5707467.html 原先对mysql不太理解,但也没有报错.但理解的不够深入.这次补上. 原来以为int ...

随机推荐

  1. Sublime Text前端开发工具介绍

    Sublime Text前端开发工具介绍.. Sublime Text这款前端开发工具中的非常优秀的特性进行介绍 ------------ sublime text 3 3114 注册码 —– BEG ...

  2. java web轻量级开发面试教程内容精粹:哪些简历得不到面试机会

    看到一本较好的实践性比较强的书,java web轻量级开发面试教程,里面的一些内容很有实践意义. 问题点 很难获得面试机会的原因 学历不符,比如要求是本科以上,但学历是大专 学历是硬指标,所以达不到学 ...

  3. ID3算法(1)

    1 简述1.1    id3是一种基于决策树的分类算法,由J.Ross Quinlan在1986年开发.id3根据信息增益,运用自顶向下的贪心策略建立决策树.信息增益用于度量某个属性对样本集合分类的好 ...

  4. Struts2文件下载中文名乱码

    Struts2中提供了快捷的下载方式,通过配置struts.xml文件即可实现文件的下载,但是功能实现后下载文件的文件名却出现乱码,或者直接来个***.action,让人很是无语,但很显然,这是中文乱 ...

  5. Java入门(2) —— 变量详解、运算符、定义类和定义方法以及方法的调用

    1.变量 1.定义变量 1.声明的同时直接赋值 数据类型 变量名 = 值; 2.先声明,后赋值 声明: 数据类型 变量名; 赋值: 变量名 = 值; 2.数据类型 基本数据类型:4类8种 整数 --- ...

  6. The C++ Programming Language 学习笔记 第6章 表达式和语句

    1.关于strcpy函数. 书中说c风格的字符串尽量少用,strcpy这样的函数应该也要少用.这里讲这个函数主要是要通过本章课后练习第十题来讲一下前面提及的要点.巩固一下前几章的知识.写了一段,本来感 ...

  7. 求链表内环的入口节点-Java

    步骤: 1.设置快慢两个指针,slow和fast,每次slow走一步slow.next,而fast走两步fast.next.next. 2.如果链表有环肯定可以在环内的一个节点相遇. 3.此时,slo ...

  8. hibernate的基本配置

    1   Hibernate是一个非侵入式的ORMapping的框架. 2   Hibernate是一个能够将JAVA对象  通过   映射关系    映射到   关系型数据库的  这样一个框架 Hib ...

  9. Java 随笔记录

    1. java对象转json Message msg = generateMessage();ObjectMapper mapper = new ObjectMapper();String json ...

  10. Java 高级特性: Lambda 表达式

    本文源代码上传到了码云,请点击 LambdaExpression 获取.Lambda 表达式是 java 8 的新特性,本文讲解了 lambda 表达式的所有知识.内容涉及到 lambda 表达式是什 ...