CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C/C++ >  C语言

求子集的程序

楼主fminhua(水落石出)2002-09-07 13:44:47 在 C/C++ / C语言 提问

#include   <iostream>  
  #include   <vector>  
   
  using   namespace   std;  
   
  template   <class   T>  
  T   GetNum(int   i,   vector<T>   set)  
  {  
  return   set[i];  
  }  
   
  template   <class   T>  
  void   Insert(T   num,   vector<T>   sub)  
  {  
  sub.push_back(num);  
  }  
   
  template   <class   T>    
  void   Delete(vector<T>   sub)  
  {  
  sub.pop_back();  
  }  
   
  template   <class   T>  
  void   PrintVector(vector<T>   sub)  
  {  
  vector<T>::const_iterator   p1;  
   
  for   (p1   =   sub.begin();   p1   !=   sub.end();   p1++)  
  cout   <<   *p1   <<   "     ";  
  }  
   
  template   <class   T>  
  void   PowerSet(int   i,   vector<T>   SrcSet,   int   n,   vector<T>   sub)  
  {  
  T   num;  
   
  if   (i   >   n-1)  
  {  
  PrintVector(sub);  
  return;  
  }  
   
  num     =   GetNum(i,   SrcSet);  
   
  Insert(num,   sub);  
   
  PowerSet(i+1,   SrcSet,   n,   sub);  
   
  Delete(sub);  
   
  PowerSet(i+1,   SrcSet,   n,   sub);  
   
  }  
   
  void   main()  
  {  
  int   a[5]   =   {1,   2,   3,   4,   5};  
  vector<int>   SrcSet(a,   a+5);  
  vector<int>   sub;  
  PowerSet(0,   SrcSet,   5,   sub);  
         
  }  
   
  这个程序什么地方错了啊!大家帮忙看看,编译通过,但结果不显示 问题点数:40、回复次数:3Top

1 楼kbsoft(让世界充满爱!)回复于 2002-09-07 13:48:49 得分 0

改为  
  void   PowerSet(int   i,   vector<T>   SrcSet,   int   n,   vector<T>   sub)  
  {  
  T   num;  
   
  if   (i   >   n-1)  
  {  
  PrintVector(sub);  
  return;  
  }  
   
  num     =   GetNum(i,   SrcSet);  
   
  Insert(num,   sub);  
   
  PowerSet(i+1,   SrcSet,   n,   sub);  
   
  Delete(sub);  
   
  PowerSet(i+1,   SrcSet,   n,   sub);  
   
                    Delete(sub);  
   
  }  
   
  试试Top

2 楼fminhua(水落石出)回复于 2002-09-07 19:14:05 得分 0

我发现了问题的所在,  
  把Delete(sub);改为sub.pop_back();  
  Insert(num,   sub);改为sub.push_back(num);  
  成功!  
  这是为什么呢?Top

3 楼hhdsq(流氓宝宝)回复于 2002-09-07 19:23:15 得分 40

void   Delete(vector<T>   sub)改为Delete(vector<T>   &sub)Top

相关问题

  • 求用递归输出n个元素所有子集的程序设计思想?
  • 求子集算法
  • 子集和问题~~~~~~~~~~~~
  • 斑竹帮忙“建议《程序员》杂志社办一个增刊,将论坛的精华帖子集结起来发行”
  • 女孩子集中营
  • 如何检查子集
  • const是不是指引&的子集?
  • C++ 语言的经、史、子、集
  • 请教关于求子集的算法
  • 如何返回多个子集

关键词

  • vector
  • template
  • srcset
  • powerset
  • p1
  • sub
  • printvector
  • getnum
  • 改为
  • num

得分解答快速导航

  • 帖主:fminhua
  • hhdsq

相关链接

  • C/C++ Blog
  • C/C++类图书
  • C/C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo