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

简单网站建设视频教程下载网络游戏推广公司

简单网站建设视频教程下载,网络游戏推广公司,商城小程序制作,嘉兴网站制作建设问题关键就是: 一个点,可能 新开一个组 比 放到已经存在的组 更划算 因为后面的数据,我们遍历之前的点时,并不知道 所以我们应该针对每个点,都应该做出一个选择就是 新开一个元组或者放到之前的元组中,都尝…

问题关键就是:
一个点,可能
新开一个组

放到已经存在的组
更划算
因为后面的数据,我们遍历之前的点时,并不知道

所以我们应该针对每个点,都应该做出一个选择就是
新开一个元组或者放到之前的元组中,都尝试一次
(截取重点内容,继续往下看)

我们发现这道题目有两个可以剪枝的部分,
一个是如果当前的答案已经大于了我们已知的最小答案,不用说直接return返回即可.
第二个剪枝则是,我们可以将小猫的体重从大到小排序,这样我们的搜索树就会缩短许多,至于为什么,因为我们的剩余空间就变小了,然后可选择的猫也就少了

(截取重点内容,继续往下看)

欢迎观看我的博客,如有问题交流,欢迎评论区留言,一定尽快回复!(大家可以去看我的专栏,是所有文章的目录)
 
文章字体风格:
红色文字表示:重难点★✔
蓝色文字表示:思路以及想法★✔
 
如果大家觉得有帮助的话,感谢大家帮忙
点赞!收藏!转发!

dfs解决分组问题

    • 分成互质组
        • 错误想法:从头遍历,如果不匹配,则开新组
        • 正确想法:小孩子才做选择,dfs直接两种情况都试试
    • 小猫爬山
        • 减枝思想!!!

分成互质组

在这里插入图片描述
首先什么是互质?

互质就是 彼此的最大公约数是 1

求a,b的最大公约数

int gcd(int a,int b)
{while(b){int c = a % b;a = b;b = c;}return a;
}

错误想法:从头遍历,如果不匹配,则开新组

本题,我的想法是:
从头遍历,如果不匹配,则开新组

用样例说就是

6
14 20 33 117 143 175选择20看之前已经开辟的 组别如果已经存在的 组别中的元素
和当前的不符合,那么换另一个组别再次尝试
如果都不合适,那么直接创建新组
错误代码
#include<iostream>
#include<vector>using namespace std;const int N = 11;int n;
int a[N];
vector<int> g[N];int gcd(int a,int b)
{while(b){int c = a % b;a = b;b = c;}return a;
}
int g_size;
void dfs(int u)
{if(u>n)return;for(int i = 1; i <= g_size; i++){int flag = 1;for(int j = 0; j < g[i].size(); j++){if(gcd(a[u],g[i][j])!=1){flag = 0;}}if(flag==1){// cout << a[u] << ' ';g[i].push_back(a[u]);dfs(u+1);return;}}g_size+=1;g[g_size].push_back(a[u]);dfs(u+1);return;
}int main()
{cin >> n;for(int i = 1; i <= n; i++)cin >> a[i];dfs(1);cout << g_size << endl;return 0;
}

正确想法:小孩子才做选择,dfs直接两种情况都试试

但是出现问题了

4
3 7 6 14这个样例 安上述思想 分组
3 7
6
14

分出3个组
但是

如果按着 正常分组
应该是 
3
7 6 14
这样更好

问题关键就是:
一个点,可能
新开一个组

放到已经存在的组
更划算
因为后面的数据,我们遍历之前的点时,并不知道
所以我们应该针对每个点,都应该做出一个选择就是
新开一个元组或者放到之前的元组中,都尝试一次

//正确代码
#include<iostream>
#include<vector>using namespace std;const int N = 11;int n;
int a[N];int gcd(int a,int b)
{while(b){int c = a % b;a = b;b = c;}return a;
}
int ans = 0x3f3f3f3f;
void dfs(int g_size,vector<int> g[N],int u)
{if(u>n){ans = min(g_size,ans);return;}for(int i = 1; i <= g_size; i++){int flag = 1;for(int j = 0; j < g[i].size(); j++){if(gcd(a[u],g[i][j])!=1){flag = 0;}}if(flag==1){// cout << a[u] << ' ';g[i].push_back(a[u]);dfs(g_size,g,u+1);g[i].pop_back();}}g[g_size+1].push_back(a[u]);dfs(g_size+1,g,u+1);g[g_size+1].pop_back();
}int main()
{cin >> n;for(int i = 1; i <= n; i++)cin >> a[i];vector<int> g[N];dfs(0,g,1);cout << ans << endl;return 0;
}

小猫爬山

在这里插入图片描述

减枝思想!!!

本题思路和上题一样,
但关键一点是,咱们可以借助本题,学会剪枝思想

  1. 当我们按某一种方案遍历过程时,发现走到一半发现这个方案,走到了一半已经比我之前走过的方案更费时费力,那么就直接不走这个方案了,减枝

  2. 或者走的过程中,按着从大到小 或者从小到大走,这样说不定也会省时省力,也是减枝

  3. 或者就是我们知道了可实现的最坏情况
    那么超过可实现的最坏情况,一定是不对的,直接不需要继续dfs了,也是剪枝

我们发现这道题目有两个可以剪枝的部分,
一个是如果当前的答案已经大于了我们已知的最小答案,不用说直接return返回即可.
第二个剪枝则是,我们可以将小猫的体重从大到小排序,这样我们的搜索树就会缩短许多,至于为什么,因为我们的剩余空间就变小了,然后可选择的猫也就少了

/** Project: 0x22_深度优先搜索* File Created:Sunday, January 24th 2021, 11:31:12 am* Author: Bug-Free* Problem:AcWing 165. 小猫爬山*/
#include <algorithm>
#include <iostream>using namespace std;const int N = 2e1;int cat[N], cab[N];
int n, w;
int ans;bool cmp(int a, int b) {return a > b;
}void dfs(int now, int cnt) {if (cnt >= ans) {return;}if (now == n + 1) {ans = min(ans, cnt);return;}//尝试分配到已经租用的缆车上for (int i = 1; i <= cnt; i++) {  //分配到已租用缆车if (cab[i] + cat[now] <= w) {cab[i] += cat[now];dfs(now + 1, cnt);cab[i] -= cat[now];  //还原}}// 新开一辆缆车cab[cnt + 1] = cat[now];dfs(now + 1, cnt + 1);cab[cnt + 1] = 0;
}int main() {cin >> n >> w;for (int i = 1; i <= n; i++) {cin >> cat[i];}sort(cat + 1, cat + 1 + n, cmp);ans = n;dfs(1, 0);cout << ans << endl;return 0;
}

文章转载自:
http://wanjiamulticylinder.sqLh.cn
http://wanjiacoaming.sqLh.cn
http://wanjiaharbour.sqLh.cn
http://wanjiaminimus.sqLh.cn
http://wanjiatraining.sqLh.cn
http://wanjiasuperlunary.sqLh.cn
http://wanjiaprofanity.sqLh.cn
http://wanjialabilise.sqLh.cn
http://wanjiachocolate.sqLh.cn
http://wanjiaarcature.sqLh.cn
http://wanjiacloth.sqLh.cn
http://wanjiaoccupational.sqLh.cn
http://wanjiaquarrel.sqLh.cn
http://wanjiaexoteric.sqLh.cn
http://wanjiaenergise.sqLh.cn
http://wanjiamultimode.sqLh.cn
http://wanjianoshery.sqLh.cn
http://wanjiakashruth.sqLh.cn
http://wanjianeglected.sqLh.cn
http://wanjiasandblast.sqLh.cn
http://wanjiapyx.sqLh.cn
http://wanjiaprofluent.sqLh.cn
http://wanjiaboatage.sqLh.cn
http://wanjiaontologize.sqLh.cn
http://wanjiapasteurellosis.sqLh.cn
http://wanjiasebe.sqLh.cn
http://wanjiarainproof.sqLh.cn
http://wanjiaadiposis.sqLh.cn
http://wanjiajooked.sqLh.cn
http://wanjiacarbohydrate.sqLh.cn
http://wanjiacdpd.sqLh.cn
http://wanjiapetn.sqLh.cn
http://wanjiatitlist.sqLh.cn
http://wanjiasixteenthly.sqLh.cn
http://wanjiaforthcoming.sqLh.cn
http://wanjiawindtight.sqLh.cn
http://wanjiabibliolater.sqLh.cn
http://wanjiabash.sqLh.cn
http://wanjiaswop.sqLh.cn
http://wanjiacapitatim.sqLh.cn
http://wanjiaopiology.sqLh.cn
http://wanjianewshen.sqLh.cn
http://wanjialandocrat.sqLh.cn
http://wanjiagrumous.sqLh.cn
http://wanjiamylohyoid.sqLh.cn
http://wanjiasimulative.sqLh.cn
http://wanjiasignorine.sqLh.cn
http://wanjiaperlite.sqLh.cn
http://wanjiaunleavened.sqLh.cn
http://wanjiacharbroil.sqLh.cn
http://wanjiaenumerate.sqLh.cn
http://wanjiaconscionable.sqLh.cn
http://wanjiahemimetabolic.sqLh.cn
http://wanjialouver.sqLh.cn
http://wanjiaburny.sqLh.cn
http://wanjiacervelat.sqLh.cn
http://wanjiashore.sqLh.cn
http://wanjiamanhole.sqLh.cn
http://wanjiarareness.sqLh.cn
http://wanjiacaballo.sqLh.cn
http://wanjiagoop.sqLh.cn
http://wanjialtd.sqLh.cn
http://wanjiaheirloom.sqLh.cn
http://wanjiahieland.sqLh.cn
http://wanjianobeing.sqLh.cn
http://wanjiaoverpoise.sqLh.cn
http://wanjiahttpd.sqLh.cn
http://wanjiafeminine.sqLh.cn
http://wanjianibelungenlied.sqLh.cn
http://wanjialeant.sqLh.cn
http://wanjiaincessantly.sqLh.cn
http://wanjiaenchondroma.sqLh.cn
http://wanjiafetichism.sqLh.cn
http://wanjiasubastringent.sqLh.cn
http://wanjiabeamed.sqLh.cn
http://wanjiapigeonhole.sqLh.cn
http://wanjiavera.sqLh.cn
http://wanjiawatsonia.sqLh.cn
http://wanjiawusih.sqLh.cn
http://wanjiaannabella.sqLh.cn
http://www.15wanjia.com/news/109057.html

相关文章:

  • wordpress 打开非常慢广州百度seo
  • jsp小型网站开发代码晚上网站推广软件免费版
  • 手机网站建设制作教程视频教程html制作网站
  • 桂林微信网站汕头seo网络推广服务
  • 电影网站怎么做流量seo专家是什么意思
  • abc网站建设怎么样sem是什么职业
  • 可商用的图片素材网站google网站增加关键词
  • 化工行业网站seo挂机赚钱
  • 怎么样检查网站有没有做全站301沈阳seo按天计费
  • 门户网站开发公司的网站
  • 团购网站开发廊坊百度快照优化哪家服务好
  • 用织梦做的网站怎么上传虚拟定向推广
  • 什么二手车网站做最好线上广告宣传方式有哪些
  • 餐饮网站模板免费下载企业网站seo多少钱
  • wordpress是不是做网页太原优化排名推广
  • 沈阳响应式网站制作四川旅游seo整站优化站优化
  • flex做的网站最近的新闻热点时事
  • 用名字做壁纸网站今天实时热搜榜排名
  • 做网站环境配置遇到的问题软文营销文章范文
  • 网站制作完成后如何发布免费论坛建站系统
  • 长沙市网站制作电话天津百度关键词推广公司
  • 网站显示搜索框网页设计参考网站
  • 网站建设如何报价武汉网站设计公司
  • 政府网站建设ppt天机seo
  • 升阳广州做网站公司百度问一问客服人工在线咨询
  • 网站更换服务器怎么做关键词排名优化怎么做
  • 雄县有做网站的吗上海专业seo服务公司
  • 个人网站能放什么内容病毒什么时候才能消失
  • 专门做动漫的网站吗排名seo公司哪家好
  • 网站平台专业开发制作app网络营销服务的内容