21xrx.com
2024-12-27 22:27:22 Friday
登录
文章检索 我的文章 写文章
C++实现整数拆分输出
2023-07-06 06:16:01 深夜i     --     --
C++ 整数 拆分 输出

C++是一种广泛应用的编程语言,被用于各种计算机程序的实现。其中,整数拆分是一个常见的问题,它是指将一个正整数分解为若干个正整数的和的问题。本文将介绍如何使用C++实现整数拆分并输出结果。

首先,我们需要定义一个函数来实现整数拆分。函数的输入是要拆分的整数num,以及分解的最小整数minValue和最大整数maxValue。函数的输出是一个包含所有拆分方案的字符串向量。


std::vector<std::string> integerPartition(int num, int minValue, int maxValue)

{

  std::vector<std::string> result;

  if (num == 0)

  {

    result.push_back("");

    return result;

  }

  else if (num < minValue || minValue > maxValue)

  

    return result;

  

  else

  {

    for (int i = minValue; i <= maxValue && i <= num; i++)

    {

      std::vector<std::string> subResult = integerPartition(num - i, i, maxValue);

      for (std::string s : subResult)

      {

        if (s == "")

          result.push_back(std::to_string(i));

        else

          result.push_back(std::to_string(i) + "+" + s);

      }

    }

    return result;

  }

}

上述代码中,我们使用了递归的方法进行整数的拆分。如果num等于0,说明已经到了最底层,我们将一个空字符串加入结果集中。否则,我们枚举所有的拆分方案,即从minValue到maxValue的所有正整数。对于每一个i,我们计算出剩余的部分num-i,并递归调用integerPartition函数。将递归调用的结果保存在subResult中。最后,我们遍历subResult中的所有字符串,根据当前的i,进行字符串拼接并将结果存入result中。

接着,我们可以在main函数中调用integerPartition函数,并输出所有的拆分方案。


int main()

{

  int num;

  std::cout << "Please enter an integer to partition: ";

  std::cin >> num;

  std::vector<std::string> result = integerPartition(num, 1, num);

  std::cout << "Partition ways:" << std::endl;

  for (std::string s : result)

  

    std::cout << s << std::endl;

  

  return 0;

}

上述代码中,我们首先从控制台读入要拆分的整数num。然后,我们调用integerPartition函数,生成所有的拆分方案。最后,我们遍历结果集,一个一个输出拆分方案。

综上所述,我们可以在C++中实现整数拆分并输出结果。这是一个简单但有趣的编程问题,可以培养我们的编程思维能力。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复