<% dim ModuleName,InfoID,ChannelShortName,CorrelativeArticle,InstallDir,ChannelDir,Keyword,PageTitle,ArticleIntro,Articlecontent Keyword=stripHTML("组合数") PageTitle=stripHTML("计算一个数的所有组合数") ArticleIntro=stripHTML("") Articlecontent=stripHTML("计算一个数的组合数, 使用递归进行求解。  如果计算3位的组合数, 首先任选固定一位, 然后计算其余两位的组合数, 最后组合至一起。 如 1 + [23, 32…") ModuleName = stripHTML("programme") InfoID = stripHTML("117155") ChannelShortName=stripHTML("编程") InstallDir=stripHTML("http://www.77169.com/") ChannelDir=stripHTML("programme") %> 计算一个数的所有组合数 - 华盟网 - http://www.77169.com
您现在的位置: 华盟网 >> 编程 >> C语言 >> 正文

计算一个数的所有组合数

2014/6/12 作者:不详 来源: 华盟收集
导读 <% if len(ArticleIntro)<3 then Response.Write Articlecontent 'Response.Write "Articlecontent" else Response.Write ArticleIntro 'Response.Write "ArticleIntro" end if %>

计算一个数的组合数, 使用递归进行求解。

  如果计算3位的组合数, 首先任选固定一位, 然后计算其余两位的组合数, 最后组合至一起。 如 1 + [23, 32] = 123, 132;

  在固定其余位数, 如 2 + [13, 31] = 213, 231; 3 + [12, 21] = 312, 321;

  程序分为两步分, 一个删除任意位置的一个元素, 一个是递归求解组合数。

  代码:

  /*

  * Combination.cpp

  *

  *  Created on: 2014.6.9

  *      Author: Spike

  */

  /*eclipse cdt, gcc 4.8.1*/

  #include <IOSTREAM>

  #include <VECTOR>

  #include <STRING>

  using namespace std;

  void deleteOneNum (std::string& _num, std::size_t _n) {

  if (_n >= _num.length()) {

  return;

  }

  string temp (_num.substr(_n+1));

  _num = _num.substr(0, _n) + temp;

  }

  void combination (std::string _num, std::string _buff,

  std::vector<STD::STRING>& _result)

  {

  if (_num.length() <= 0) {

  _result.push_back(_buff);

  }

  for (std::size_t i=0; i<_num.length(); ++i) {

  std::string temp (_num);

  deleteOneNum(temp, i);

  combination(temp, _buff+_num[i], _result);

  }

  }

  int main (void) {

  std::string num("4123");

  std::vector<STD::STRING> result;

  combination(num, "", result);

  for (std::size_t i=0;

  i<RESULT.SIZE();

  pre < } 0; return std::endl;

  《 result[i] std::cout { ++i)><BR><STRONG>输出:

  </STRONG><P></P><P></P><PRE class=brush:java;>4123

  </PRE><BR><BR><P></P><P><BR></P>

  <P sizcache08878593653388793="0.0.0" sizset="false">

  <IMG style="WIDTH: 560px;

  DISPLAY: inline;

  HEIGHT: 560px"



  • 上一篇编程:

  • 下一篇编程:
  • 编程栏目相关内容

      没有相关编程