深搜,亮点在那个剪枝,flag代表是否搜索数组从开始到当前一直等于原始数组同位置的数,如果是真,就从原始数组的当前位置的书开始搜,否则就从0开始搜。

见代码。

#include <iostream>
#include <cstring>using namespace std;
int n,m,beg,origin[2003];
int mp[103][103];
bool vis[103][103];
int cnt;
int stk[2010];
bool check()
{int i;for(i=0;i<=m;i++){if(stk[i]==origin[i])continue;if(stk[i]<origin[i])return false;if(stk[i]>origin[i])return true;}return false;
}void dfs(int bg,bool flag)
{
//    cout<<cnt<<endl;if(cnt==m+1){
//        for(int i=0;i<=m;i++)
//            cout<<stk[i]<<' ';
//        cout<<endl;if(stk[cnt-1]==beg&&check()){return;}else{return;}}for(int i=1;i<=n;i++){if(flag&&i<origin[cnt])continue;if(mp[bg][i]&&!vis[bg][i]){vis[bg][i]=true;vis[i][bg]=true;stk[cnt++]=i;dfs(i,flag&&i==origin[cnt-1]);
//            cout<<stk[cnt]<<endl;if(cnt==m+1&&stk[cnt-1]==beg&&check())return;
//                cout<<" "<<cnt<<endl;cnt--;
//            cout<<"  "<<cnt<<endl;vis[bg][i]=false;vis[i][bg]=false;}}return;
}
int main()
{cin>>n>>m;int i;cnt=1;memset(mp,0,sizeof(mp));memset(vis,false,sizeof(vis));cin>>origin[0];beg=origin[0];for(i=1;i<=m;i++){cin>>origin[i];mp[origin[i-1]][origin[i]]=1;mp[origin[i]][origin[i-1]]=1;}for(i=1;i<=n;i++)
//    {
//        for(int j=1;j<=n;j++)
//            cout<<mp[i][j]<<' ';
//        cout<<endl;}stk[0]=beg;dfs(beg,true);
//    cout<<cnt<<endl;if(cnt==m+1){for(i=0;i<=m;i++)cout<<stk[i]<<' ';cout<<endl;}elsecout<<"No solution"<<endl;return 0;
}

  

转载于:https://www.cnblogs.com/aljxy/p/3415684.html

练手CF3-C - Wormhouse相关推荐

  1. 最常见NLP任务练手项目汇总

    分词 Word Segmentation chqiwang/convseg ,基于CNN做中文分词,提供数据和代码. 词预测 Word Prediction Kyubyong/word_predict ...

  2. 人脸识别:insightface自定义数据集制作 | 附练手数据集

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 转自|小白玩转python 01 人脸识别简介 简单来讲,人脸识别 ...

  3. 适合新手练手,用Python爬取OPGG里英雄联盟英雄胜率及选取率,详细讲解加注释(建议收藏练手)

    今天来个简单的小项目,适合新手拿来练手,在OPGG上爬取英雄联盟里的法师,ADC,打野,辅助所有英雄的胜率及选取率,是不是感觉很高大上,但是却很简单,只要用三十多行代码就能实现,详细讲解每一行代码加注 ...

  4. 48个Python练手项目(附详细教程)

    Python 初学者在迈过安装编程环境和基本语法的门槛 ,准备大展身手的时候,可能突然就会进入迷茫期:不知道做些什么.再学些什么.然后对编程的兴趣就会慢慢消退,找不到坚持下去的理由,从而慢慢淡忘之前学 ...

  5. 70个Python练手项目列表,看了让你茅塞顿开~

    前言: 不管学习哪门语言都希望能做出实际的东西来,这个实际的东西当然就是项目啦,不用多说大家都知道学编程语言一定要做项目才行. 这里整理了70个Python实战项目列表,都有完整且详细的教程,你可以从 ...

  6. 70个Python练手项目列表 预祝大家 快乐

    小孩眺望远方,成人怀念故乡. 为此给大家分享一下珍藏的Python实战项目,祝大家节日快乐哦!!! Python 前言:不管学习哪门语言都希望能做出实际的东西来,这个实际的东西当然就是项目啦,不用多说 ...

  7. 一个适合于Python 初学者的入门练手项目

    随着人工智能的兴起,国内掀起了一股Python学习热潮,入门级编程语言,大多选择Python,有经验的程序员,也开始学习Python,正所谓是人生苦短,我用Python 有个Python入门练手项目, ...

  8. 棱形旋转c语言程序_C 语言时隔 5 年重回巅峰,这 20 个热门项目拿去练手!

    在上个月的 TIOBE 编程语言排名中,C 语言和 Java 的差距只有 0.01%.在近日 TIOBE 公布的 2020 年 5 月编程语言排行榜中,C 语言成功超越了 Java,重返第一的王者宝座 ...

  9. 推荐 Python 十大经典练手项目,让你的 Python 技能点全亮!

    前言:如果有人问:"Python还火吗?""当然,很火.""哪能火多久呢?""不知道." 技术发展到现在衍生出许多种编程 ...

  10. [推荐推荐][提供下载]ORACLE SQL:经典查询练手系列文章收尾(目录篇)

    [推荐推荐][提供下载]ORACLE SQL: 经典查询练手系列文章收尾(目录篇) --通过知识共享树立个人品牌. 通过近一个月的努力,<经典查询练手系列>也快告一段落,但并不代表结束,以 ...

最新文章

  1. 帧中继环境下NBMA模式的配置
  2. 数据库元数据数据字典查询_2_列出所有的数据库
  3. powershell XML操作
  4. vue axios解决post传参数问题
  5. e4a服务器文件,e4a链接网站服务器
  6. 设计法则 - 菲茨定律 (转)
  7. tp5 html获取get,tp5获取请求参数
  8. [我研究] A TAXONOMY OF SECURITY FAULTS IN THE UNIX OPERATING SYSTEM - Master Thesis
  9. python pyqt教程_『开发技巧』PyQt5入门教程
  10. mysql 防重复提交_怎样防止刷新重复提交、防后退
  11. SentinelResource注解配置中_客户自定义限流处理_削峰填谷_流量控制_速率控制_服务熔断_服务降级---微服务升级_SpringCloud Alibaba工作笔记0046
  12. 美国 CISA 和 NIST 联合发布软件供应链攻击相关风险及缓解措施
  13. Selenium - What will happen behind the scenes when running client code
  14. 苏嵌实训——day7
  15. 不用注册表删除搜狗输入法残留文件夹
  16. 转载:Android底部导航栏,三种风格和实现
  17. 超硬核万字!web前端学霸笔记,学完就去找工作吧
  18. csgo调出参数_CSGO参数设置
  19. 【0429】散列函数和消息鉴别
  20. 存储芯片引脚和时序:SRAM(HY6264A系列)

热门文章

  1. 背包类树形DP 选课题解
  2. Zabbix 添加端口监控链接
  3. CentOS7服务去Nginx使用-安装
  4. 由java的八个基本数据类型说开去
  5. 3ds max 渲染清晰面片的边缘
  6. 如何优雅的实现界面跳转 之 统跳协议 - DarwinNativeRouter
  7. [Objective-c 基础 - 2.1] 封装
  8. Windows下批量删除svn配置文件夹.svn
  9. 深入理解计算机系统(4.2)---硬件的魅力
  10. JSP response request 中文乱码