题目链接:UVALive 6948  Jokewithpermutation

题意:给一串数字序列,没有空格,拆成从1到N的连续数列。

dfs.

可以计算出N的值,也可以直接检验当前数组是否合法。

#include <stdio.h>
#include <iostream>
#include <string.h>
#define maxn 100
using namespace std; char str[maxn];
int num[maxn];
bool vis[maxn];
int cnt;
int len;
int N; bool ok = false; bool dfs(int id, int pos) {
if (ok) return false;
if (pos == len && id == N) {
cnt = id;
ok = true;
return true;
}
if (pos >= len) return false; num[id] = str[pos] - '0';
if (num[id] >= 1 && num[id] <= N && !vis[num[id]]) {
vis[num[id]] = 1;
if (dfs(id+1, pos+1)) return true;
//dfs(id+1, pos+1);
vis[num[id]] = 0;
}
num[id] = (str[pos]-'0')*10 + str[pos+1]-'0';
if (num[id] >= 1 && num[id] <= N && !vis[num[id]]) {
vis[num[id]] = 1;
if (dfs(id+1, pos+2)) return true;
//dfs(id+1, pos+2);
vis[num[id]] = 0;
}
return false;
} int main() {
//freopen("in.cpp", "r", stdin);
while(~scanf("%s", str)) {
ok = false;
len = strlen(str);
cnt = 0;
N = (len>9?9:len)+(len>9?(len-9)/2:0);
memset(vis, 0, sizeof(vis));
dfs(0, 0);
for (int i=0; i<cnt; ++i) {
if (i == 0) printf("%d", num[i]);
else printf(" %d", num[i]);
}
printf("\n");
}
return 0;
}

dfs要优雅...

UVALive 6948 Jokewithpermutation dfs的更多相关文章

  1. UVALive 6948 Jokewithpermutation 深搜

    题意就是把一段序列拆成从1到n的形式 一开始暴力了一下 后来发现bug太多一定是思路不对…… #include<stdio.h> #include<iostream> #inc ...

  2. Jokewithpermutation (DFS)

    Problem J. Jokewithpermutation Input file: joke.inOutput file: joke.out Joey had saved a permutation ...

  3. UVALive - 6436(DFS)

    题目链接:https://vjudge.net/contest/241341#problem/C 题目大意:给你从1到n总共n个数字,同时给你n-1个连接,同时保证任意两个点之间都可以连接.现在假设任 ...

  4. UVALive - 6436 —(DFS+思维)

    题意:n个点连成的生成树(n个点,n-1条边,点与点之间都连通),如果某个点在两点之间的路径上,那这个点的繁荣度就+1,问你在所有点中,最大繁荣度是多少?就比如上面的图中的C点,在A-B,A-D,A- ...

  5. Cells UVALive - 3486(dfs序+手动开栈)

    给一棵树,每次每次询问一个点是否是另一个点的祖先? 输入时是每个下标对应节点的儿子的数量 用dfs序 时间戳.. 如果一个点是另一个点的祖先,那么它的两个标记一定在祖先的范围之内 #include & ...

  6. UVALive - 6712 lca+dfs序线段树

    题意:一棵树q次查询,每次查询给三个不同的点,要求计算到这三个点的比其他两个距离都要小的点数 题解:很明显的lca,倍增的找中点,关键是两个点的中点很好找,但是三个点不好找,我刚开始还准备分类讨论,后 ...

  7. UVALive - 6436、HYSBZ - 2435 (dfs)

    这两道题都是用简单dfs解的,主要是熟悉回溯过程就能做,据说用bfs也能做 道路修建(HYSBZ - 2435) 在 W 星球上有n 个国家.为了各自国家的经济发展,他们决定在各个国家 之间建设双向道 ...

  8. DFS Gym 100553J Jokewithpermutation

    题目传送门 /* 题意:将字符串分割成一个全排列 DFS:搜索主要在一位数和两位数的处理,用d1, d2记录个数,在不饱和的情况下,两种都试一下 DFS还是写不来,难道是在家里懒? */ #inclu ...

  9. UVALive 4998 Simple Encryption --DFS

    题意: 给出K1,求一个12位数(不含前导0)K2,使得K1^K2 mod (10^12) = K2. 解法: 求不动点问题. 有一个性质: 如果12位数K2满足如上式子的话,那么K2%1,K2%10 ...

随机推荐

  1. Perl 中 Pod 的基本用法。

    1. Pod 语法 pod中用段分可以分为三种,普通段落,字面段落(Verbatim Paragraph)和命令段落.三者的区分非常简单,以=pod|head1|cut|over等指示字开始的段落为命 ...

  2. mouseover和mouseenter的区别

    mouseover和mouseenter都是鼠标事件. mouseover事件,当鼠标穿过被选元素的时候,若此元素有子元素,子元素也会被触发此事件.即是使用mouseover事件,会多次触发此元素. ...

  3. htm Dom对象与 Xml Dom对象的理解

    html 是基于Xml的文档规范.是一种特殊的xml文档,这一点很重要 1.xml 文档的操作,java,c#,...各种语言都提供了很好的api对文档进行解析,操作.当然js 也不例外,提供了一系列 ...

  4. mysql 中文字段排序( 按拼音首字母排序) 的查询语句

    在处理使用Mysql时,数据表采用utf8字符集,使用中发现中文不能直接按照拼音排序 如果数据表tbl的某字段name的字符编码是latin1_swedish_ci select * from `tb ...

  5. ubuntu源码安装django

    由于用pip install django方法安装太慢,而且容易报错,故使用源码的方式安装 方法: 下载源码包:https://www.djangoproject.com/download/ 输入以下 ...

  6. Javascript链式调用案例

    jQuery用的就是链式调用.像一条连接一样调用方法. 链式调用的核心就是return this;,每个方法都返回对象本身. 下面是简单的模拟jQuery的代码, <script> win ...

  7. 学会使用JDK API

    api是字典,知识过了一遍之后,剩下的就是实践+百度+api了

  8. Android 热修复Nuwa的原理及Gradle插件源码解析

    现在,热修复的具体实现方案开源的也有很多,原理也大同小异,本篇文章以Nuwa为例,深入剖析.  Nuwa的github地址 https://github.com/jasonross/Nuwa 以及用于 ...

  9. 最牛B的编码套路(转)

    转自:http://blog.csdn.net/happydeer/article/details/17023229 最近,我大量阅读了Steve Yegge的文章.其中有一篇叫"Pract ...

  10. switch-case 执行顺序

    switch(expression){ case value : //语句 break; //可选 case value : //语句 break; //可选 //你可以有任意数量的case语句 de ...