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 + -
显示快捷键?