题目链接:UVALive 6948  Jokewithpermutation

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

dfs.

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

  1. #include <stdio.h>
  2. #include <iostream>
  3. #include <string.h>
  4. #define maxn 100
  5. using namespace std;
  6.  
  7. char str[maxn];
  8. int num[maxn];
  9. bool vis[maxn];
  10. int cnt;
  11. int len;
  12. int N;
  13.  
  14. bool ok = false;
  15.  
  16. bool dfs(int id, int pos) {
  17. if (ok) return false;
  18. if (pos == len && id == N) {
  19. cnt = id;
  20. ok = true;
  21. return true;
  22. }
  23. if (pos >= len) return false;
  24.  
  25. num[id] = str[pos] - '0';
  26. if (num[id] >= 1 && num[id] <= N && !vis[num[id]]) {
  27. vis[num[id]] = 1;
  28. if (dfs(id+1, pos+1)) return true;
  29. //dfs(id+1, pos+1);
  30. vis[num[id]] = 0;
  31. }
  32. num[id] = (str[pos]-'0')*10 + str[pos+1]-'0';
  33. if (num[id] >= 1 && num[id] <= N && !vis[num[id]]) {
  34. vis[num[id]] = 1;
  35. if (dfs(id+1, pos+2)) return true;
  36. //dfs(id+1, pos+2);
  37. vis[num[id]] = 0;
  38. }
  39. return false;
  40. }
  41.  
  42. int main() {
  43. //freopen("in.cpp", "r", stdin);
  44. while(~scanf("%s", str)) {
  45. ok = false;
  46. len = strlen(str);
  47. cnt = 0;
  48. N = (len>9?9:len)+(len>9?(len-9)/2:0);
  49. memset(vis, 0, sizeof(vis));
  50. dfs(0, 0);
  51. for (int i=0; i<cnt; ++i) {
  52. if (i == 0) printf("%d", num[i]);
  53. else printf(" %d", num[i]);
  54. }
  55. printf("\n");
  56. }
  57. return 0;
  58. }

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. SQL Server索引 (原理、存储)聚集索引、非聚集索引、堆 <第一篇>

    一.存储结构 在SQL Server中,有许多不同的可用排列规则选项. 二进制:按字符的数字表示形式排序(ASCII码中,用数字32表示空格,用68表示字母"D").因为所有内容都 ...

  2. MyEclipse启动Tomcat服务器时老是跳到Debug调试上

    window->preferences->Myeclipse->Servers->Tomcat 然后找到你的相应的Tomcat服务器的版本, 选中然后展开其下面的子菜单会发现有 ...

  3. Java List实体类去重

    版权声明:本文为博主原创文章,未经博主允许不得转载. List特点:元素有放入顺序,元素可重复 Map特点:元素按键值对存储,无放入顺序 Set特点:元素无放入顺序,元素不可重复(注意:元素虽然无放入 ...

  4. Delphi 过程与函数

    注:该内容整理自以下链接. http://chanlei001.blog.163.com/blog/static/340306642011111615445266/ delphi 过程以保留字proc ...

  5. Echarts柱形图颜色设置

    ECharts图为每个数据项配置颜色 (2014-11-12 15:52:53) 转载▼ 标签: 时尚 分类: 开发学习 其实给每个数据项配置很简单 只需要在series里面给data数组的每个元素设 ...

  6. 记录一下表格用poi的导出word

    也是网上找的代码http://53873039oycg.iteye.com/blog/2152009,但是横向合并单元格没成功.只能用很蠢的办法建立了好多table public void fillT ...

  7. 转!!常用的4种动态网页技术—CGI、ASP、JSP、PHP

    1.CGI   CGI(Common Gateway Interface,公用网关接口)是较早用来建立动态网页的技术.当客户端向Web服务器上指定的CGI程序发出请求时,Web服务器会启动一个新的进程 ...

  8. Machine Learning - 第6周(Advice for Applying Machine Learning、Machine Learning System Design)

    In Week 6, you will be learning about systematically improving your learning algorithm. The videos f ...

  9. [ 转]Android快速开发–使用ORMLite操作数据库

    OrmLite是一个数据库操作辅助的开源框架,主要面向Java语言.在Android面向数据库开发中,是一个比较流行的开源框架,方便操作而且功能强大,今天来学习一下,最近的项目中也有所涉及,写个博客来 ...

  10. javaweb2 URL(查找的过程)

    URL: 全名叫统一资源定位符,用于定位互联网的资源. 问题:接上(javaweb1 tomcat)http://localhost:8080/myweb/test.html 分析:http://-- ...