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
书中提到写作手法绝对值得学习,为此能够打四颗星. 作者是个买直销产品的.靠写字让别人买自己的东西.当中特别强调了卖的多是太空时代的产品,意思就是读者非常可能并不须要,多半是被眼花缭乱的广告词儿骗了 ...
随机推荐
- 从oracle导入hive
sqoop import --connect jdbc:oracle:thin:@10.39.1.43:1521/rcrm --username bi_query --password ####### ...
- POJ 1228 Grandpa's Estate(凸包唯一性判断)
Description Being the only living descendant of his grandfather, Kamran the Believer inherited all o ...
- iOS-开发过程中应用间跳转问题
- python-网易云简单爬虫
一.准备工作 1.使用python3.6和pycharm 2.使用的模块 tkinter .requests .beautifulSoup.getpass.os 3.网易云的榜单页面地址 https: ...
- Hive整体优化策略
一 整体架构优化 现在hive的整体框架如下,计算引擎不仅仅支持Map/Reduce,并且还支持Tez.Spark等.根据不同的计算引擎又可以使用不同的资源调度和存储系统. 整体架构优化点: 1 根据 ...
- SERVER 2008 R2 SP1下的内存虚拟盘(支持32位,64位的所有windows版本)
一时冲动把笔记本的系统换成了2008 R2 SP1的,本来想着用笔记本开HYPER-V的,结果是失败了,我发现我的4750G开了HYPER-V后CPU一直居高不下,其中有个什么系统软件保护的服务就占用 ...
- 伟大的淘宝IP库的API接口竟然提示503挂掉了
1 淘宝IP库惊现503错误 吃完晚饭,大概6点半了,天色已暗,太阳早就落山了.回到宿舍打开博客一看,傻眼了:博客每篇文章的评论者的地理信息全部处于“正在查询中……”的状态.这神马情况,不会是被淘宝封 ...
- 第28天:js-Tab栏切换封装函数
一.input.value所有值都是string 二.变量和属性var index=10;//变量var arr=[];//数组arr.index=20;//index为自定义属性,只能在arr下使用 ...
- 前端基础:CSS样式选择器
前端基础:CSS样式选择器 CSS概述 CSS是Cascading Style Sheets的简称,中文意思是:层叠样式表,对html标签的渲染和布局.CSS规则由两个主要的部分组成:1.选择器:2. ...
- Shel脚本学习—反引号、单引号、双引号区别与联系
反引号 反引号位 (`) 位于键盘的Tab键的上方.1键的左方.注意与单引号(')位于Enter键的左方的区别. 在Linux中起着命令替换的作用.命令替换是指shell能够将一个命令的标准输出插在一 ...