首 页 行业热点 新车 试驾评测 养车用车 车型库

c++编程对于递归函数的使用 应用于背包问题

发布网友 发布时间: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)。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com