UVA129 暴力dfs,有许多值得学习的代码
紫书195
题目大意:给一个困难的串,困难的串的定义就是里面没有重复的串。
思路:不需要重新对之前的串进行判重,只需要对当前的加入的字符进行改变即可。
因为是判断字典序第k个的字符串,所以要多一个全局变量cnt来记录目前是第几次循环到了。
#include<bits/stdc++.h> using namespace std;
const int maxn = + ;
int n, L;
int s[maxn];
int cnt; bool dfs(int cur){
//printf("cur = %d\n", cur);
if (cnt++ == n){
for (int i = ; i < cur; i++){
if (i % == && i > ) printf("\n");
else if (i % == && i > ) printf(" ");
printf("%c", s[i] + 'A'); }
printf("\n");
printf("%d\n", cur);
return ;
}
else {
for (int i = ; i < L; i++){
s[cur] = i;
bool flag = true;
/*下面的这个暴力枚举半长的一定要学会*/
for (int j = ; j * <= cur + ; j++){/*必须cur+1,因为cur是从第0位开始的*/
int equa = ;
for (int k = ; k < j; k++){
if (s[cur - k] != s[cur - j - k]){
equa = ;
break;
}
}
if (equa == ) {flag = false; break;}
}
if (flag){
if (!dfs(cur + )) return false;
}
}
}
return ;
} int main(){
while (scanf("%d%d", &n, &L) && n + L != ){
cnt = ;
dfs();
}
return ;
}
关键:暴力dfs法不需要对之前已经确定的状态再次进行条件确定。 二分寻找合法串。 全局记录字典序的序列。
并且懂得暴力枚举一般的技巧
定义!!!!很重要。
目前如果我们放入的这个串合法的,那么二分j,那么对于cur-j和cur-j-k也必须要是合法的才行,所以这个是判断的条件,也是新手入门的难点
UVA129 暴力dfs,有许多值得学习的代码的更多相关文章
- hihoCoder 1185 连通性·三(Tarjan缩点+暴力DFS)
#1185 : 连通性·三 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 暑假到了!!小Hi和小Ho为了体验生活,来到了住在大草原的约翰家.今天一大早,约翰因为有事要出 ...
- 值得学习的C语言开源项目
值得学习的C语言开源项目 - 1. Webbench Webbench是一个在linux下使用的非常简单的网站压测工具.它使用fork()模拟多个客户端同时访问我们设定的URL,测试网站在压力下工 ...
- go语言值得学习的开源项目推荐
谷歌官方维护了一个基于go语言的开源项目列表: https://github.com/golang/go/wiki/Projects 其中有非常多的优秀项目值得学习,有几百行代码适合新手阅读的项目,也 ...
- 很值得学习的java 画图板源码
很值得学习的java 画图板源码下载地址:http://download.csdn.net/source/2371150 package minidrawpad; import java.awt.*; ...
- Strange Country II 暴力dfs
这题点的个数(<=50)有限, 所以可以纯暴力DFS去搜索 //#pragma comment(linker, "/STACK:16777216") //for c++ Co ...
- 是什么让C#成为最值得学习的编程语言
随着 Web.iOS.Android.智能设备的流行,新的编程语言纷纷涌现并表现不俗,如 Ruby,Python,Scala,Go,Node.js,Swift 等.反观已经发展了近20年的 C# 语言 ...
- 值得学习的C/C++开源框架(转)
值得学习的C语言开源项目 - 1. Webbench Webbench是一个在linux下使用的非常简单的网站压测工具.它使用fork()模拟多个客户端同时访问我们设定的URL,测试网站在压力下工作的 ...
- 精选 TOP45 值得学习的Python项目
精选 TOP45 值得学习的Python项目 [导读]热门资源博客 Mybridge AI 比较了 18000 个关于 Python 的项目,并从中精选出 45 个最具竞争力的项目.我们进行了翻译,在 ...
- 目的可疑,但方法非常值得学习的书——leo鉴书56
书中提到写作手法绝对值得学习,为此能够打四颗星. 作者是个买直销产品的.靠写字让别人买自己的东西.当中特别强调了卖的多是太空时代的产品,意思就是读者非常可能并不须要,多半是被眼花缭乱的广告词儿骗了 ...
随机推荐
- 安装HIVE
参考:https://cwiki.apache.org/confluence/display/Hive/GettingStarted 1.下载hive安装包 到apache官网或者其它地方下载 ...
- this指针与const成员函数
this指针的类型为:classType *const // 即指向类类型非常量版本的常量指针 所以,我们不能把this绑定到一个常量对象上 ===> 不能在一个常量对象上调用普通的 ...
- Gym - 100851F Froggy Ford kruskal
题目链接: http://acm.hust.edu.cn/vjudge/problem/307216 Froggy Ford Time Limit: 3000MS 题意 青蛙过河,河中有若干个石头,现 ...
- sping框架(3)— 使用spring容器
spring有两个核心接口:BeanFactory和ApplicationContext,其中ApplicationContext是BeanFactory的子接口.它们都可以代表spring容器,sp ...
- Linux 路由 学习笔记 之一 相关的数据结构
http://blog.csdn.net/lickylin/article/details/38326719 从现在开始学习路由相关的代码,在分析代码之前, 我们还是先分析数据结构,把数据结构之间的关 ...
- c# 中base64字符串和图片的相互转换
c#base64字符串转图片用到了bitmap类,封装 GDI+ 位图,此位图由图形图像及其特性的像素数据组成. Bitmap 是用于处理由像素数据定义的图像的对象. 具体bitmap类是什么可以自己 ...
- QWidget一生,从创建到销毁事件流
版权声明:若无来源注明,Techie亮博客文章均为原创. 转载请以链接形式标明本文标题和地址: 本文标题:QWidget一生,从创建到销毁事件流 本文地址:http://techieliang ...
- week1 技术随笔
类别c 内容c 开始时间s 结束时间e 被打断时间I 总计(min) 9.5 随笔 构建之法福后感 22:00 24:00 7 113 9.6 分析 需求分析 9:00 9:30 2 28 编码 词频 ...
- Java判断数据库表是否存在的方法
一.需求 最近在写一个程序,需要取数据库表的数据之前,需要先查看数据库是否存在该表否则就跳过该表. 二.解决方案(目前想到两种,以后遇到还会继续添加): .建立JDBC数据源,通过Java.sql.D ...
- [计算机网络] DNS何时使用TCP协议,何时使用UDP协议
DNS同时占用UDP和TCP端口53是公认的,这种单个应用协议同时使用两种传输协议的情况在TCP/IP栈也算是个另类.但很少有人知道DNS分别在什么情况下使用这两种协议. 先简单介绍下TCP与UDP. ...