题目给你一个串, 串是严格的 1 – n 的排列,里面的数是随机的

把这个串里面的数字分别输出//先预处理,对于给出的串能找到里面的最大数,再 DFS 处理

  1. #include<iostream>
  2. #include<string>
  3. #include<algorithm>
  4. #include<cstdio>
  5. #include<cstring>
  6. #include<stack>
  7. using namespace std;
  8. bool Jug[100];
  9. string num[55];
  10. string str;
  11. int len,Num;
  12. stack<int> Sum;
  13. bool Dfs(int n) {
  14. if(n >= len) {
  15. if(Jug[Num] == true) return true;
  16. return false;
  17. }
  18. int a,b;
  19. if(n <len) a = str[n] - '0';
  20. if(n < len-1) b = a*10 + str[n+1] - '0';
  21. if(a==0) return false;
  22. if(Jug[a] == false && n <len) {
  23. Jug[a] = true;
  24. if(Dfs(n+1))
  25. {
  26. Sum.push(a);
  27. return true;
  28. }
  29. Jug[a] = false;
  30. }
  31. if(b <= 50 && Jug[b] == false && n < len-1) {
  32. Jug[b] = true;
  33. if(Dfs(n+2)) {
  34. Sum.push(b);
  35. return true;
  36. }
  37. Jug[b] = false;
  38. }
  39. return false;
  40. }
  41. int main() {
  42. num[1] = "1";
  43. for(int i = 2; i <= 50; ++i) if(i < 10) num[i] = (num[i-1] + char(i + '0'));
  44. else num[i] = (num[i-1] + char(i/10 + '0') + char (i % 10 + '0'));
  45. for(int i = 1; i <= 50; ++i) sort(num[i].begin(),num[i].end());
  46. //////////////
  47.  
  48. while(cin >> str) {
  49. Num = 0;
  50. memset(Jug,false,sizeof(Jug));
  51. while(!Sum.empty()) Sum.pop();
  52. string s = str;
  53. sort(s.begin(),s.end());
  54. for(int i = 1; i <= 50; ++i) if(s == num[i]) {
  55. Num = i; break;
  56. }
  57. //cout << Num << endl;
  58. len = str.length();
  59. Dfs(0);
  60. while(!Sum.empty()) {
  61. cout << Sum.top() << " ";
  62. Sum.pop();
  63. }
  64. cout << endl;
  65. }
  66. }

HNUOJ 13341的更多相关文章

  1. ACM/ICPC 之 模拟 (HNUOJ 13391-换瓶模拟)

    题意:汽水瓶有三个部分cap+plastic bottle+ label(瓶盖-瓶身-瓶底),给出数据:n为原瓶数,x,y,z为这三个部分可以用相应的数字换取新瓶子,求最大总瓶数. 模拟(暴力) // ...

  2. ACM/ICPC 之 数论-费马大定理(HNUOJ 13371)

    好歹我是数学专业的学生,还是要写写训练的时候遇到的数学问题滴~~ 在ACM集训的时候在各高校OJ上也遇见过挺多的数学问题,例如大数的处理,素数的各种算法,几何问题,函数问题(单调,周期等性质),甚至是 ...

  3. dir命令只显示文件名

    dir /b 就是ls -f的效果 1057 -- FILE MAPPING_web_archive.7z 2007 多校模拟 - Google Search_web_archive.7z 2083 ...

  4. hdu 1395 2^x mod n = 1 暴力过~~最好学下欧拉定理~~~

    2^x mod n = 1 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) To ...

  5. LeetCode.接雨水

    题外话:LeetCode上一个测试用例总是通不过(我在文章末贴出通不过的测试用例),给的原因是超出运行时间,我拿那个测试用例试了下2.037ms运行完.我自己强行给加了这句: && m ...

  6. 使用VBA轻松实现汉字与拼音的转换

    Function pinyin(p As String) As String i = Asc(p) Select Case i Case -20319 To -20318: pinyin = &quo ...

  7. Html5使用canvas作图

    以下例子是项目中实际用到的.不足之处请大家指正,设计到画线,写文字,填充,文字旋转. <!DOCTYPE html> <html> <head lang="en ...

  8. 如何搭建WebRTC信令服务器

    WebRTC 有一整套规范,如怎样使用它的接口.使用SDP进行媒体协商.通过ICE收集地址并进行连通性检测等等.除此之外,WebRTC还需要房间服务器将多端聚集到一起管理,以及信令服务器进行信令数据交 ...

  9. LZO 使用和介绍

    LZO说明 摘要 LZO 是一个用 ANSI C 语言编写的无损压缩库.他能够提供非常快速的压缩和解压功能.解压并不需要内存的支持.即使使用非常大的压缩比例进行缓慢压缩出的数据,依然能够非常快速的解压 ...

随机推荐

  1. windows安装mysql示例

    1. 下载mysql安装包,如: mysql-5.6.34-winx64.zip2. 解压安装包到指定目录,如:D盘,即:D:\mysql-5.6.34-winx643. 配置 cd D:\mysql ...

  2. 【python小练】图片爬虫之BeautifulSoup4

    Python3用不了Scrapy! Python3用不了Scrapy! Python3用不了Scrapy! [重要的事情说三遍,据说大神们还在尝试把scrapy移植到python3,特么浪费我半个小时 ...

  3. Java中的按位运算

    博客大搬家. 一.位运算符简介: 1.按位与&.如果两个整形数据 a.b 对应位都是1,则结果位才为1,否则为0,(int 最大值0x7fffffff ): int a = 0x7ffffff ...

  4. 用Kersa搭建神经网络【MNIST手写数据集】

    MNIST手写数据集的识别算得上是深度学习的”hello world“了,所以想要入门必须得掌握.新手入门可以考虑使用Keras框架达到快速实现的目的. 完整代码如下: # 1. 导入库和模块 fro ...

  5. PHP面试(三):面试技巧

    一.面前准备 1.注意形象——穿着得体.注意言行举止. 2.提前了解——公司情况.业务情况 3.充分准备——自我介绍.对所学知识点充分复习.重点复习自己易犯错误.充分的休息 二.注意事项 1.遵守时间 ...

  6. [JSON]初识JSON

    1:什么是json json是,是储存和交换文本信息的语法,类似于xml,但是比xml更小,更快,更易解析.   2:JSON的语法规则 JSON中:数据在key/velue对中,数据由对号分隔,花括 ...

  7. 【译】第九篇 SQL Server安全透明数据加密

    本篇文章是SQL Server安全系列的第九篇,详细内容请参考原文. Relational databases are used in an amazing variety of applicatio ...

  8. Leetcode#169. Majority Element(求众数)

    题目描述 给定一个大小为 n 的数组,找到其中的众数.众数是指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素. 你可以假设数组是非空的,并且给定的数组总是存在众数. 示例 1: 输入: [3,2,3] ...

  9. 剑指Offer题解索引

    数组 数组中重复的数字 二维数组中的查找 构建乘积数组 字符串 替换空格 字符流中第一个不重复的字符 表示数值的字符串 递归和循环 斐波那契数列 跳台阶 变态跳台阶 矩形覆盖 链表 从尾到头打印链表 ...

  10. 遍历系统中所有的进程,可根据名字或ID查找某一个线程

    我们这根据名字查找进程,获取其ID /*@brief 获取找到的与指定进程名相符的第一个进程ID * @param [in] cpszExeFileName 进程可执行文件名(不带路径) * @par ...