sy8.cpp

来自「给定一个正整数的集合,子集和问题要求在这个正整数集合中,找出其和不超过正整数C的」· C++ 代码 · 共 61 行

CPP
61
字号
#include   <iostream>   
using   namespace   std;   
    
  const   int   MAX=11;   
  const   int   b[MAX]={1,2,3,4,5,8,11,23,45};   
  int   x[MAX]={0};   
  int   sum;   
    
  int   Sum();   
  int   SumOfSub(int   ,int   ,int   );   
  void   Display(int *);   
    
  int   main()   
  {   
          cout<<"enter   the   sum:"<<endl;   
  cin>>sum;   
  int   s=0,k=0,r;   
  r=Sum();   
  // cout<<r<<endl;   
  SumOfSub(s,k,r);   
  system("pause");   
  return   0;   
  }   
    
  int   Sum()   
  {   
  int   s=0;   
  for(int   i=0;i<MAX;i++)   
  {   
                  s+=b[i];   
  }   
  return   s;   
  }   
    
  int   SumOfSub(int   s,int   k,int   r)   
  {   
  if(k>=8)   return   0;   
  x[k]=1;   
  if(s+b[k]==sum)   
  {   
  Display(x);   
  }   
  if(s+b[k]<sum)   
  SumOfSub(s+b[k],k+1,r-b[k]);   
  x[k]=0;   
  SumOfSub(s,k+1,r-b[k]);   
  return   0;   
  }   
    
  void   Display(int   *x) 
  {   
  for(int   i=0;i<MAX;i++)   
  {   
  if(x[i]==1)   
  cout<<b[i]<<"\t";   
  }   
  cout<<endl;   
  } 
  

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?