当前位置: 首页 > wzjs >正文

网站空间续费网站的网络营销推广方案

网站空间续费,网站的网络营销推广方案,企业招聘ppt模板免费,中国工商注册网官方学习要点 深入理解回溯深入理解01背包问题 题目链接 购物单_牛客题霸_牛客网 题目描述 解法1&#xff1a;回溯 其实此题非常符合取子集的逻辑&#xff0c;但是时间复杂度太高。通过11/14。想写出来这个回溯过程&#xff0c;不容易。 #include <iostream> #include &l…

学习要点

  1. 深入理解回溯
  2. 深入理解01背包问题

题目链接

        购物单_牛客题霸_牛客网

题目描述

解法1:回溯

        其实此题非常符合取子集的逻辑,但是时间复杂度太高。通过11/14。想写出来这个回溯过程,不容易。

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int money; // 有多少钱
int max_value = 0; // 礼物最终的最大价值
bool check[66];void dfs(vector<vector<int>>& v_big, int pos, int path_value, int path_cost) {for (int i = pos; i <= v_big.size() - 1; i++) {// 主件不附带他人,但是有可能已经被别的附带// 没有被添加过的主件if (v_big[i][3] == 0 && check[i] == false) {// 还可以买这个主件if ((path_cost + v_big[i][1]) <= money) {check[i] = true;max_value = max(max_value, path_value + v_big[i][1] * v_big[i][2]);if ( i == v_big.size()) {check[i] = false;break;}dfs(v_big, i + 1, path_value + v_big[i][1] * v_big[i][2],path_cost + v_big[i][1]);check[i] = false;}// 钱不够了,不能买这个主件else {max_value = max(max_value, path_value);// if (i != v_big.size() - 1) {//     continue;// }}}// 已经被添加过的主件else if (v_big[i][3] == 0 && check[i] == true) {// if (i != v_big.size() - 1) {//     continue;// }}// 附件附带的主件有可能被添加过,有可能没有被添加过// 已经添加主件的附件else if (v_big[i][3] != 0 && check[v_big[i][3]] == true) {// 还可以买这个附件if ((path_cost + v_big[i][1]) <= money) {check[i] = true;max_value = max(max_value, path_value + v_big[i][1] * v_big[i][2]);if ( i == v_big.size()) {check[i] = false;break;}dfs(v_big, i + 1, path_value + v_big[i][1] * v_big[i][2],path_cost + v_big[i][1]);check[i] = false;}// 钱不够了,不能买这个附件else {max_value = max(max_value, path_value);// if (i != v_big.size() - 1) {//     continue;// }}}// 没有添加主件的附件else if (v_big[i][3] != 0 && check[v_big[i][3]] == false) {// 还可以买这个附件if ((path_cost + v_big[i][1] + v_big[v_big[i][3]][1] ) <= money) {check[i] = true;check[v_big[i][3]] = true;max_value = max(max_value, path_value + v_big[i][1] * v_big[i][2]);if ( i == v_big.size()) {check[i] = false;break;}dfs(v_big, i + 1, path_value + v_big[i][1] * v_big[i][2] +v_big[v_big[i][3]][1] * v_big[v_big[i][3]][2],path_cost + v_big[i][1] + v_big[v_big[i][3]][1]);check[i] = false;check[v_big[i][3]] = false;}// 钱不够了,不能买这个附件{max_value = max(max_value, path_value);// if (i != v_big.size() - 1) {//     continue;// }}}else {}}
}int main() {int count;cin >> money >> count;// cout << money << " " << count << endl;vector<vector<int>> v_big(count + 1, vector<int>(4));int i = 1;while (i <= count) {cin >> v_big[i][1] >> v_big[i][2] >> v_big[i][3];i++;}// for(int j = 1; j<= count; j++)// {//     cout << v_big[j][1] << " "<< v_big[j][2] << " " << v_big[j][3] << endl;// }dfs(v_big, 1, 0, 0);cout << max_value << endl;return 0;
}

解法2:01背包

#include <bits/stdc++.h>
using namespace std;int main() {int count;int money;cin >> money >> count;// cout << money << " " << count << endl;vector<vector<int>> v_big(count + 1, vector<int>(4));int i = 1;while (i <= count) {cin >> v_big[i][1] >> v_big[i][2] >> v_big[i][3];i++;}// 简单改造一下这个数组for(int i = 1; i<=count;i++){v_big[i][1] = v_big[i][1] / 10;v_big[i][2] = v_big[i][2] * 10;if(v_big[i][3] != 0 ){int index = v_big[i][3];v_big[index].push_back(v_big[i][1]); v_big[index].push_back(v_big[i][2]);v_big[i][1] = 0; v_big[i][2] = 0; v_big[i][3] = 0;}}// 动归逻辑int num = money / 10;vector<vector<int>> dp(count + 1,vector<int>(num+1,0));// 首元素情况:无附件主件、单附件主件、双附件主件// 恰巧我们v_big[0]是全0,我们索性将其虚拟成0号物品这样方便我们进行初始化// 则全部初始化为0即可for(int i = 1; i<=count;i++){for(int j = 1; j<=num; j++){if(v_big[i][1] > j){dp[i][j] = dp[i-1][j];}else{// 不取该主件   int a = dp[i-1][j];// 只取该主件int b = dp[i-1][j - v_big[i][1]] + v_big[i][1] * v_big[i][2];// 取主件取单附件int c1 = 0;int c2 = 0;int c = 0;if(v_big[i].size() > 4){if((v_big[i][1] + v_big[i][4]) <= j){c1 = dp[i-1][j-v_big[i][1] - v_big[i][4]] + v_big[i][1] * v_big[i][2] + v_big[i][4] * v_big[i][5];}if((v_big[i][1] + v_big[i][6]) <= j){c2 = dp[i-1][j-v_big[i][1] - v_big[i][6]] + v_big[i][1] * v_big[i][2] + v_big[i][6] * v_big[i][7];}c = max(c1,c2);}// 取主件取双附件int d = 0;if(v_big[i].size() > 6){if((v_big[i][1] + v_big[i][4] + v_big[i][6]) <= j){d = dp[i-1][j-v_big[i][1] - v_big[i][4]- v_big[i][6]] + v_big[i][1] * v_big[i][2] + v_big[i][4] * v_big[i][5] + v_big[i][6] * v_big[i][7];}}int max1 = max(a,b); int max2 = max(c,d); int max3 = max(max1,max2);dp[i][j] = max3;}}}cout << dp[count][num]  << endl;return 0;}


文章转载自:

http://KzsNnmqy.fhrgk.cn
http://yGClOpHe.fhrgk.cn
http://y8mt4yOq.fhrgk.cn
http://4xtPhdVf.fhrgk.cn
http://9mCtJXoA.fhrgk.cn
http://dkBPu42V.fhrgk.cn
http://lHYWAmDg.fhrgk.cn
http://soVNue5F.fhrgk.cn
http://exStVJO0.fhrgk.cn
http://cC8PFpQG.fhrgk.cn
http://n6q0J4ni.fhrgk.cn
http://A3kU90Vy.fhrgk.cn
http://U4XjA0Ch.fhrgk.cn
http://tjTna0Lx.fhrgk.cn
http://LJ5eh9CK.fhrgk.cn
http://eRS8lpFe.fhrgk.cn
http://XUY0FNtu.fhrgk.cn
http://CzcFSD3g.fhrgk.cn
http://2IMqW9ZR.fhrgk.cn
http://xHHpnEeU.fhrgk.cn
http://eBfvYGeC.fhrgk.cn
http://1nK3v8Ix.fhrgk.cn
http://yw71Nytr.fhrgk.cn
http://Obxylz3f.fhrgk.cn
http://Uv6zdvHC.fhrgk.cn
http://LOOu6BL8.fhrgk.cn
http://OjHvw1gd.fhrgk.cn
http://ZLTnwFtS.fhrgk.cn
http://mocJhgJT.fhrgk.cn
http://ovGf3MzI.fhrgk.cn
http://www.dtcms.com/wzjs/696828.html

相关文章:

  • 做网站空间百度云和阿里云区别中国塑料商业网
  • 做一个网站一般费用宝安做棋牌网站建设哪家技术好
  • 哪些专业能建网站宁波趋势信息科技有限公司
  • 打开建设银行官方网站首页佛山外贸网站设计公司
  • 太原市建设交易中心网站首页电商网站要素
  • 西部网站助手网站策划书ppt
  • 泰安肥城做网站的公司页游平台网站
  • 网站数据库 备份wordpress新窗口打开所有外链
  • 页面有哪几个网站可以做新余网站建设
  • 广西建设职业技术学院管理工程系网站2014考试前培训时间克拉玛依做网站
  • 给公司做网站云南购物网站建设
  • 网站开发和网页上传的说法淘宝购物网站
  • 长安做网站站长之家查询网站
  • 小企业网站价格工程建设管理网站
  • 提卡网站要怎么做做网站样品图片怎么拍照
  • 长沙网站制作公司有哪些网站代理登录域名
  • 网站建设涉及的知识产权wordpress婚礼主题
  • 做网站下载那个数据库好怎么给wordpress加背景图
  • 宁波微网站建设电子商务网站建设指导书
  • 网站建设谢辞加强统计局网站的建设和管理
  • cdn网站加速 免备案网站做生鲜线下推广建议
  • 建个短视频网站网络营销就业方向
  • 网站开发开发只做正品的购物网站
  • 济南做网站的哪家好软件开发培训机构价格
  • 网站制造宿州高端网站建设公司
  • html好看的网站的代码两学一做网站是多少钱
  • 娱乐网站建设ppt模板镇江网页设计工作室
  • 西宁网站怎么做seowordpress弹出式表单
  • 四川建设厅官方网站证书查询美术生十大最烂专业
  • 做地方房产网站怎么样大学网站开发