发布网友 发布时间:2022-04-21 01:39
共2个回答
热心网友 时间:2022-06-17 03:53
#include <iostream>
using namespace std;
int list1[10];
//insersorrt function
void sorrt(int list[],int size)
{
for(int i=0;i<size;i++)
{
int max=list[i];
int k;
for(k=i-1;k>=0&&list[k]>max;k--)
{
list[k+1]=list[k];
}
list[k+1]=max;
}
}
void fun(int x,int y,int z,int list[],int m)
{
if(z==m)
{
for(int i=0;i<y;i++)
cout<<list1[i]<<" ";
cout<<endl;
}
else
{
for(x;x<10;x++)
{
if(list[x]<=m-z)
{
list1[y]=list[x];
fun(x+1,y+1,z+list[x],list,m);
}
}
}
}
int main()
{
int list[10];//declare a array
//cin the array in circulation
for(int i=0;i<10;i++)
cin>>list[i];
//sorrt the array in insert sorrtion
sorrt(list,10);
//cin the number you want to funtion
int m;
cin>>m;
//use recursion function to breake up the number m
fun(0,0,0,list,m);
return 0;
}
热心网友 时间:2022-06-17 03:54
这个是 《算法导论》上面的题目。
使用二分查找,对每一个A,查找(m-A)。