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

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

#include<iostream>
#include<string>
#include<algorithm>
#include<cstdio>
#include<cstring>
#include<stack>
using namespace std;
bool Jug[100];
string num[55];
string str;
int len,Num;
stack<int> Sum;
bool Dfs(int n) {
if(n >= len) {
if(Jug[Num] == true) return true;
return false;
}
int a,b;
if(n <len) a = str[n] - '0';
if(n < len-1) b = a*10 + str[n+1] - '0';
if(a==0) return false;
if(Jug[a] == false && n <len) {
Jug[a] = true;
if(Dfs(n+1))
{
Sum.push(a);
return true;
}
Jug[a] = false;
}
if(b <= 50 && Jug[b] == false && n < len-1) {
Jug[b] = true;
if(Dfs(n+2)) {
Sum.push(b);
return true;
}
Jug[b] = false;
}
return false;
}
int main() {
num[1] = "1";
for(int i = 2; i <= 50; ++i) if(i < 10) num[i] = (num[i-1] + char(i + '0'));
else num[i] = (num[i-1] + char(i/10 + '0') + char (i % 10 + '0'));
for(int i = 1; i <= 50; ++i) sort(num[i].begin(),num[i].end());
////////////// while(cin >> str) {
Num = 0;
memset(Jug,false,sizeof(Jug));
while(!Sum.empty()) Sum.pop();
string s = str;
sort(s.begin(),s.end());
for(int i = 1; i <= 50; ++i) if(s == num[i]) {
Num = i; break;
}
//cout << Num << endl;
len = str.length();
Dfs(0);
while(!Sum.empty()) {
cout << Sum.top() << " ";
Sum.pop();
}
cout << endl;
}
}

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. NOIP2016(D1T2)天天爱跑步题解

    首先声明这不是一篇算法独特的题解,仍然是"LCA+桶+树上差分",但这篇题解是为了让很多很多看了很多题解仍然看不懂的朋友们看懂的,其中就包括我,我也在努力地把解题的"思维 ...

  2. Tornado基本应用

    Tornado简介 Tornado有自己的socket(异步非阻塞,原生支持WebSocket),Django没有. Tornado的模板语言更接近Python风格,比Django要好理解. Demo ...

  3. 我的长大app开发教程第三弹:实现四个子页面绑定RadioButton

    在开始之前先上一张图 在上一节中我们实现了底部Button,这一弹我们要实现点击四个按钮分别切换到不同页面,我们可以把页面分为两部分,顶部栏和中间内容部分,我们可以通过线性布局包裹两部分内容,顶部栏又 ...

  4. js 操作对象 记录

    js 对象记录一下: let obj_1 = { name : 'james', age : '22', sex: '1' } for ( i in obj_1 ) { console.log(i) ...

  5. 【五】服务熔断、降级 —— Hystrix(豪猪)

    分布式系统面临的问题 复杂分布式体系结构中的应用程序有数十个依赖,每个依赖关系将在某些时候将不可避免地失败. 服务雪崩 多个微服务之间调用的时候,假设微服务A调用微服务B和微服务C,微服务 B和微服务 ...

  6. Groovy 类名称赋值为变量使用(newInstance & new)

    类创建实例一般方式 http://groovy-lang.org/objectorientation.html#_class class Person { String name Integer ag ...

  7. bzoj 3916 暴力哈希

    暴力的哈希,注意: 将一个串当作另一个串的前缀,需要乘上p[len],len=后面串的长度 这是自己的代码,拿数据在本地测A掉了,但是bz上wa了??bz换数据了难道?? #include<cs ...

  8. web api HttpResponseMessage的简单使用

    using Lemon.Common; using Lemon.WeChat.Model; using Lemon.WeChat.Services; using Newtonsoft.Json; us ...

  9. Docker 容器的隔离性

    Docker 容器的隔离性 就是 使用Linux namespace 来隔离运行环境和成 cgroup 限制容器使用的资源.  namespace 可以顾名思义 命名空间:所以可以理解为每个独立的容器 ...

  10. Centos6.8 下解决服务器被挖矿当肉鸡的方法

    刚上班发现有些服务跑不起来,进入服务器查看原因: 第一部分: 一,#top 因为是刚被我kill 掉一次,kill 掉等会还会自启动,之前yam 进程占cpu 是200% 二,# vim /etc/r ...