设计一个算法在 1,2,……9(顺序不变)
设计一个算法在 1,2,……9(顺序不变)
数值之间插入+或者-或者什么都不插入,
使得计算结果总是 100 的程序。
例如 1+2+34-5+67-8+9=100。
输出所有的答案。
后面补上
背包问题(回溯法解决)
#include <iostream>
/**
*回溯法
*背包问题
**/
using namespace std;
int w[]={2,2,6,5,4}; //各个背包重量
int v[]={6,3,5,4,6}; // 各个背景价值
int vmax=0; //总价值
int W=10; //背包容量
//深度优先搜索 背包选或者不选两种情况
void dfs_backpack(int n,int isw,int isv,int i,int tag)
{
//递归终结条件 n个背包选完后 判断重量isw是否大于W 若不大于在进一步判断价值isv是否大于vmax,最后return
if(i>=n)
{
if(isw<=W)
{
if(vmax<isv)
vmax=isv;
}
return;
}
//tag==1表示该背包被选中 加上价值和重量
if(tag==1)
{
isw+=w[i];
isv+=v[i];
}
//选
dfs_backpack(n,isw,isv,i+1,1);
//不选
dfs_backpack(n,isw,isv,i+1,0);
}
int main(int argc, char** argv) {
//测试
dfs_backpack(5,0,0,-1,0); //i初始值为-1 tag初始值为0
//输出
cout<<vmax;
return 0;
}
活动安排问题
后面补上
迷宫问题
后面补上