逐个追加组合算法(二)

2013-09-26 19:52:34 · 作者: · 浏览: 350

 

  q[j]=Temp;

  for (int m=j+1; m<nSize+1; m++)

  {

  q[m]=p[m-1];

  }

  q[nSize+1]='\0';

  g_vecA.push_back(q);

  }

  }

  for (itor = g_vecB.end()-1; itor>=g_vecB.begin(); itor--)

  {

  char* p = *itor;

  g_vecB.erase(itor);

  }

  g_vecB.clear();

  }

  else

  {

  //遍历A中的元素

  for(itor=g_vecA.begin();itor!=g_vecA.end();itor++)

  {

  char* p = *itor;

  int nSize = strlen(p);

  //从0到nSize位置放Temp

  for (int j=0; j<nSize+1; j++)

  {

  char* q = new char[nSize+2];

  for (int k=0; k<j; k++)

  {

  q[k]=p[k];

  }

  q[j]=Temp;

  for (int m=j+1; m<nSize+1; m++)

  {

  q[m]=p[m-1];

  }

  q[nSize+1]='\0';

  g_vecB.push_back(q);

  }

  }

  for (itor = g_vecA.end()-1; itor>=g_vecA.begin(); itor--)

  {

  char* p = *itor;

  g_vecA.erase(itor);

  }

  g_vecA.clear();

  }

  }

  int nCount = 0;

  //打印所有组合

  if (g_vecA.size()==0)

  {

  for(itor=g_vecB.begin();itor!=g_vecB.end();itor++)

  {

  nCount ++;

  char* p = *itor;

  cout 《 p 《 ", ";

  if (nCount%10 == 0)

  {

  cout 《 endl;

  }

  delete p;

  p=NULL;

  }

  }

  else

  {

  for(itor=g_vecA.begin();itor!=g_vecA.end();itor++)

  {