热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

打印所有不同的整数,这些整数可以由N个数字的给定数组中的K个数字组成

打印所有不同的整数,这些整数可以由N个数字的给定数组中的K个数字组成

打印所有不同的整数,这些整数可以由 N 个数字的给定数组中的 K 个数字组成

原文:https://www . geesforgeks . org/print-all-distinct-整数-可以由给定的 n-numbers 数组中的 k-numbers 构成/

给定一个由 N 个元素和一个整数 K 组成的数组,打印所有不同的整数,这些整数可以通过从给定的 N 个数字中选择 K 个数字来形成。一个数组中的数字可以被选择任意次。

示例:

输入: k = 2,a[] = {3,8,17,5}
输出:这 10 个不同的整数是:
6 8 10 11 13 16 20 22 25 34
选择的 2 个元素是:
3+3 = 6,5+3 = 8,5+5 = 10,8+3 = 11,8+5 = 13
8+8 = 16,17+3 = 20

输入: k = 3,a[] = {3,8,17}
输出:这 10 个不同的整数是:
9 14 19 23 24 28 33 37 42 51

方法:用递归的方法解决问题。所有的组合都是要尝试的,当选择的元素个数等于 k 时,我们保留集合中形成的,这样重复的元素就不会被重复计算两次。函数 generateNumber(int count,int a[],int n,int num,int k) 是一个递归函数,其中的基本情况是当计数变为 K 时,这表示已经从数组中选择了 K 个元素。参数中的数字表示由数字的计数形成的数字。在函数中,迭代数组,对于每个元素,调用递归函数,count 为 count+1,num 为 num+a[i]。

下面是上述方法的实现:

C++

// C++ program to print all distinct
// integers that can be formed by K numbers
// from a given array of N numbers.
#include
using namespace std;
// stores all the distinct integers formed
set s;
// Function to generate all possible numbers
void generateNumber(int count, int a[], int n,
                    int num, int k)
{
    // Base case when K elements
    // are chosen
    if (k == count) {
        // insert it in set
        s.insert(num);
        return;
    }
    // Choose every element and call the function
    for (int i = 0; i         generateNumber(count + 1, a, n, num + a[i], k);
    }
}
// Function to print the distinct integers
void printDistinctIntegers(int k, int a[], int n)
{
    generateNumber(0, a, n, 0, k);
    cout <<"The " <         <<" distinct integers are:\n";
    // prints all the elements in the set
    while (!s.empty()) {
        cout <<*s.begin() <<" ";
        // erase the number after printing it
        s.erase(*s.begin());
    }
}
// Driver Code
int main()
{
    int a[] = { 3, 8, 17, 5 };
    int n = sizeof(a) / sizeof(a[0]);
    int k = 2;
    // Calling Function
    printDistinctIntegers(k, a, n);
    return 0;
}

Java 语言(一种计算机语言,尤用于创建网站)

// Java program to print all
// distinct integers that can
// be formed by K numbers from
// a given array of N numbers.
import java.util.*;
import java.lang.*;
class GFG
{
    // stores all the distinct
    // integers formed
    static TreeSet set =
                   new TreeSet();
    // Function to generate
    // all possible numbers
    public static void generateNumber(int count, int a[],
                                      int n, int num, int k)
    {
        // Base case when K
        // elements are chosen
        if(count == k)
        {
            set.add(num);
            return;
        }
        // Choose every element
        // and call the function
        for(int i = 0; i         generateNumber(count + 1, a, n,
                       num + a[i], k);
    }
    // Function to print
    // the distinct integers
    public static void printDistinctIntegers(int k,
                                             int a[], int n)
    {
        generateNumber(0, a, n, 0, k);
        System.out.print("The" + " " + set.size() +
                         " " + "distinct integers are: ");
        System.out.println();
        Iterator i = set.iterator();
        // prints all the
        // elements in the set
        while(set.isEmpty() == false)
        {
            while(i.hasNext())
            {
                System.out.print(i.next() + " ");
                //set.remove(i.next());
            }  
        }
    }
    // Driver Code
    public static void main (String[] args)
    {
        int arr[] = {3, 8, 17, 5};
        int n = arr.length;
        int k = 2;
        // Calling Function
        printDistinctIntegers(k, arr, n);
    }
}

Python 3

# Python3 program to print all distinct
# integers that can be formed by K numbers
# from a given array of N numbers.
# stores all the distinct integers formed
s = set()
# Function to generate all possible numbers
def generateNumber(count, a, n, num, k):
    # Base case when K elements are chosen
    if k == count:
        # insert it in set
        s.add(num)
        return
    # Choose every element and call the function
    for i in range(0, n):
        generateNumber(count + 1, a, n,    
                         num + a[i], k)
# Function to print the distinct integers
def printDistinctIntegers(k, a, n):
    generateNumber(0, a, n, 0, k)
    print("The", len(s),
          "distinct integers are:")
    # prints all the elements in the set
    for i in sorted(s):
        print(i, end = " ")
# Driver Code
if __name__ == "__main__":
    a = [3, 8, 17, 5]
    n, k = len(a), 2
    # Calling Function
    printDistinctIntegers(k, a, n)
# This code is contributed by Rituraj Jain

C

// C# program to print all
// distinct integers that can
// be formed by K numbers from
// a given array of N numbers.
using System;
using System.Collections.Generic;
class GFG
{
    // stores all the distinct
    // integers formed
    static SortedSet set =
                new SortedSet();
    // Function to generate
    // all possible numbers
    public static void generateNumber(int count, int []a,
                                    int n, int num, int k)
    {
        // Base case when K
        // elements are chosen
        if(count == k)
        {
            set.Add(num);
            return;
        }
        // Choose every element
        // and call the function
        for(int i = 0; i         generateNumber(count + 1, a, n,
                    num + a[i], k);
    }
    // Function to print
    // the distinct integers
    public static void printDistinctIntegers(int k,
                                            int []a, int n)
    {
        generateNumber(0, a, n, 0, k);
        Console.Write("The" + " " + set.Count +
                        " " + "distinct integers are: ");
        Console.WriteLine();
        // prints all the
        // elements in the set
        foreach(int sets in set)
        {
                Console.Write(sets + " ");
        }
    }
    // Driver Code
    public static void Main (String[] args)
    {
        int []arr = {3, 8, 17, 5};
        int n = arr.Length;
        int k = 2;
        // Calling Function
        printDistinctIntegers(k, arr, n);
    }
}
// This code has been contributed by 29AjayKumar

java 描述语言


Output: 

The 10 distinct integers are:
6 8 10 11 13 16 20 22 25 34

推荐阅读
  • 本文主要解析了Open judge C16H问题中涉及到的Magical Balls的快速幂和逆元算法,并给出了问题的解析和解决方法。详细介绍了问题的背景和规则,并给出了相应的算法解析和实现步骤。通过本文的解析,读者可以更好地理解和解决Open judge C16H问题中的Magical Balls部分。 ... [详细]
  • 本文讨论了使用差分约束系统求解House Man跳跃问题的思路与方法。给定一组不同高度,要求从最低点跳跃到最高点,每次跳跃的距离不超过D,并且不能改变给定的顺序。通过建立差分约束系统,将问题转化为图的建立和查询距离的问题。文章详细介绍了建立约束条件的方法,并使用SPFA算法判环并输出结果。同时还讨论了建边方向和跳跃顺序的关系。 ... [详细]
  • Python正则表达式学习记录及常用方法
    本文记录了学习Python正则表达式的过程,介绍了re模块的常用方法re.search,并解释了rawstring的作用。正则表达式是一种方便检查字符串匹配模式的工具,通过本文的学习可以掌握Python中使用正则表达式的基本方法。 ... [详细]
  • 怎么在PHP项目中实现一个HTTP断点续传功能发布时间:2021-01-1916:26:06来源:亿速云阅读:96作者:Le ... [详细]
  • 本文介绍了一种划分和计数油田地块的方法。根据给定的条件,通过遍历和DFS算法,将符合条件的地块标记为不符合条件的地块,并进行计数。同时,还介绍了如何判断点是否在给定范围内的方法。 ... [详细]
  • 本文介绍了解决二叉树层序创建问题的方法。通过使用队列结构体和二叉树结构体,实现了入队和出队操作,并提供了判断队列是否为空的函数。详细介绍了解决该问题的步骤和流程。 ... [详细]
  • 本文介绍了UVALive6575题目Odd and Even Zeroes的解法,使用了数位dp和找规律的方法。阶乘的定义和性质被介绍,并给出了一些例子。其中,部分阶乘的尾零个数为奇数,部分为偶数。 ... [详细]
  • CF:3D City Model(小思维)问题解析和代码实现
    本文通过解析CF:3D City Model问题,介绍了问题的背景和要求,并给出了相应的代码实现。该问题涉及到在一个矩形的网格上建造城市的情景,每个网格单元可以作为建筑的基础,建筑由多个立方体叠加而成。文章详细讲解了问题的解决思路,并给出了相应的代码实现供读者参考。 ... [详细]
  • 本文介绍了PE文件结构中的导出表的解析方法,包括获取区段头表、遍历查找所在的区段等步骤。通过该方法可以准确地解析PE文件中的导出表信息。 ... [详细]
  • 成功安装Sabayon Linux在thinkpad X60上的经验分享
    本文分享了作者在国庆期间在thinkpad X60上成功安装Sabayon Linux的经验。通过修改CHOST和执行emerge命令,作者顺利完成了安装过程。Sabayon Linux是一个基于Gentoo Linux的发行版,可以将电脑快速转变为一个功能强大的系统。除了作为一个live DVD使用外,Sabayon Linux还可以被安装在硬盘上,方便用户使用。 ... [详细]
  • C++中的三角函数计算及其应用
    本文介绍了C++中的三角函数的计算方法和应用,包括计算余弦、正弦、正切值以及反三角函数求对应的弧度制角度的示例代码。代码中使用了C++的数学库和命名空间,通过赋值和输出语句实现了三角函数的计算和结果显示。通过学习本文,读者可以了解到C++中三角函数的基本用法和应用场景。 ... [详细]
  • Android源码深入理解JNI技术的概述和应用
    本文介绍了Android源码中的JNI技术,包括概述和应用。JNI是Java Native Interface的缩写,是一种技术,可以实现Java程序调用Native语言写的函数,以及Native程序调用Java层的函数。在Android平台上,JNI充当了连接Java世界和Native世界的桥梁。本文通过分析Android源码中的相关文件和位置,深入探讨了JNI技术在Android开发中的重要性和应用场景。 ... [详细]
  • 重入锁(ReentrantLock)学习及实现原理
    本文介绍了重入锁(ReentrantLock)的学习及实现原理。在学习synchronized的基础上,重入锁提供了更多的灵活性和功能。文章详细介绍了重入锁的特性、使用方法和实现原理,并提供了类图和测试代码供读者参考。重入锁支持重入和公平与非公平两种实现方式,通过对比和分析,读者可以更好地理解和应用重入锁。 ... [详细]
  • 本文介绍了使用哈夫曼树实现文件压缩和解压的方法。首先对数据结构课程设计中的代码进行了分析,包括使用时间调用、常量定义和统计文件中各个字符时相关的结构体。然后讨论了哈夫曼树的实现原理和算法。最后介绍了文件压缩和解压的具体步骤,包括字符统计、构建哈夫曼树、生成编码表、编码和解码过程。通过实例演示了文件压缩和解压的效果。本文的内容对于理解哈夫曼树的实现原理和应用具有一定的参考价值。 ... [详细]
  • 本文整理了Java面试中常见的问题及相关概念的解析,包括HashMap中为什么重写equals还要重写hashcode、map的分类和常见情况、final关键字的用法、Synchronized和lock的区别、volatile的介绍、Syncronized锁的作用、构造函数和构造函数重载的概念、方法覆盖和方法重载的区别、反射获取和设置对象私有字段的值的方法、通过反射创建对象的方式以及内部类的详解。 ... [详细]
author-avatar
手机用户2502913623
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有