练手CF3-C - Wormhouse
深搜,亮点在那个剪枝,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;
}
else
cout<<"No solution"<<endl;
return 0;
}
练手CF3-C - Wormhouse的更多相关文章
- Python学习路径及练手项目合集
Python学习路径及练手项目合集 https://zhuanlan.zhihu.com/p/23561159
- Cocos2d-Lua (练手) 微信打飞机
学习下lua,目前入门级,使用版本为 v3.3 Final For Win,空闲时间不足,只能断断续续写点东西. 一.子弹效果 子弹只做了一种,扇形发射,可以增加扇形大小,子弹的 ...
- web前端学习部落22群分享给需要前端练手项目
前端学习还是很有趣的,可以较快的上手然后自己开发一些好玩的项目来练手,网上也可以一抓一大把关于前端开发的小项目,可是还是有新手在学习的时候不知道可以做什么,以及怎么做,因此,就整理了一些前端项目教程, ...
- webpack练手项目之easySlide(三):commonChunks(转)
Hello,大家好. 在之前两篇文章中: webpack练手项目之easySlide(一):初探webpack webpack练手项目之easySlide(二):代码分割 与大家分享了webpack的 ...
- webpack练手项目之easySlide(二):代码分割(转)
在上一篇 webpack练手项目之easySlide(一):初探webpack 中我们一起为大家介绍了webpack的基本用法,使用webpack对前端代码进行模块化打包. 但是乍一看webpack ...
- webpack练手项目之easySlide(一):初探webpack (转)
最近在学习webpack,正好拿了之前做的一个小组件,图片轮播来做了下练手,让我们一起来初步感受下webpack的神奇魅力. webpack是一个前端的打包管理工具,大家可以前往:http:/ ...
- JAVA大数类练手
今天突然看到了OJ上的大数类题目,由于学习了一点大数类的知识.果断水了6道题......都是非常基础的.就当的练手的吧. 学到的只是一些大数类的基本操作.以后多做点这样的题,争取熟练运用水大数题... ...
- Python之路【第二十四篇】:Python学习路径及练手项目合集
Python学习路径及练手项目合集 Wayne Shi· 2 个月前 参照:https://zhuanlan.zhihu.com/p/23561159 更多文章欢迎关注专栏:学习编程. 本系列Py ...
- node论坛练手
当时学node,自己写了个论坛练手,现在看还是有很多问题,有时间好好改改 https://github.com/hitbs228/countdown
- 【开源】前端练手笔记,Chrome扩展应用程序(html+CSS+JS) (1)
项目名称:github-notification 项目地址:https://github.com/WQTeam/github-notification 说明:本人打算抽时间学习前端(html + cs ...
随机推荐
- 笔记2:傻瓜式盗QQ程序
1.一个简单的盗QQ号的方法 仿做一个QQ的窗体 PS:当然里面有用的控件只有两个输入框和一个登陆按钮,其他的尽量做得像一些吧! 点登陆时的后台代码: PS:需要导入两个包:using System. ...
- win8 卸载IIS
C:\Windows\System32\inetsrv C:\Windows\iis7.log C:\inetpub
- css解决方案经验杂记
文本垂直居中 单行文本:line-height的值等于height: 多行文本:padding上下值一致即可: 还可以使用position:absolute进行绝对定位,如果是相对父级元素,则需要设置 ...
- 关于C语言和汇编语言相互嵌套调用
1.C嵌套汇编 首先说一下关于GCC编译嵌有汇编语言的c语言吧,GCC编译的汇编语言不是我们上课时学的Intel x86汇编,而是AT&T汇编,两者的区别可以查看<Gcc使用的内嵌汇编语 ...
- c#和数据库技术基础之程序设计集散地-数据库
数据库,不明觉厉,今天我们就来数据库的神秘面纱 1.使用数据库的必要性 随着互联网技术的高速发展,截止到2013年我国网民的数量已接近6亿,网民数量的增长同事带动网上购物,微博,网络视频等新产业的发展 ...
- BZOJ1718 [Usaco2006 Jan] Redundant Paths 分离的路径
给你一个无向图,问至少加几条边可以使整个图变成一个双联通分量 简单图论练习= = 先缩点,ans = (度数为1的点的个数) / 2 这不是很好想的么QAQ 然后注意位运算的优先级啊魂淡!!!你个sb ...
- js构建工具和预编译
Gulp应该和Grunt比较,他们的区别我就不说了,说说用处吧.Gulp / Grunt 是一种工具,能够优化前端工作流程.比如自动刷新页面.combo.压缩css.js.编译less等等.简单来说, ...
- js刷新页面和跳转
javascript返回上一页: 1.返回上一页 history.go(-1); 返回上两个页面 history.go(-2); <a href="javascript:history ...
- mongodb的监控与性能优化
一.mongodb的监控 mongodb可以通过profile来监控数据,进行优化. 查看当前是否开启profile功能用命令 db.getProfilingLevel() 返回level等级,值为 ...
- Can't connect to local MySQL server through socket 问题解决
Fedora8启动mysql 报错:ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/var/lib/m ...