传送门

题目大意:

小蒜头又调皮了。这一次,姐姐的实验报告惨遭毒手。

姐姐的实验报告上原本记录着从 1 到 n 的序列,任意两个数字间用空格间隔。但是“坑姐”的蒜头居然把数字间的空格都给删掉了,整个数字序列变成一个长度为 1 到 100 的且首部没有空格的数字串。

现在姐姐已经怒了,蒜头找你写个程序快点把试验数据复原。

输入

输入文件有一行,为一个字符串——被蒜头搞乱的实验数据。

字符串的长度在 1 到 100 之间。

输出

输出共一行,为姐姐的原始测试数据—— 1 到 n 的输出。

任意两个数据之间有一个空格。

如果有多组符合要求的正确解,输出其中任意一组即可。

本题答案不唯一,符合要求的答案均正确

样例输入


样例输出

          

解题思路:

因为字符串的长度不超过100,可以计算出n最大是54,我们只需要枚举一位数和两位数。

先通过字符串的长度计算出n,开一个数组标记枚举过的数,只有没标记过的数并且小于等于n才会存下来继续往后搜。

size<=9: n=size

size>9:  n=(size-9)/2+9

 #include <stdio.h>
#include <string.h>
#include <iostream>
#include <string>
#include <math.h>
#include <algorithm>
#include <vector>
#include <stack>
#include <queue>
#include <set>
#include <map>
#include <sstream>
const int INF=0x3f3f3f3f;
typedef long long LL;
const int mod=1e9+;
const double PI = acos(-);
const double eps =1e-;
#define Bug cout<<"---------------------"<<endl
const int maxn=1e5+;
using namespace std;
const int prime[]={,,,,,,,,,,,,,,}; string str;
int n;//提前计算出,可用来剪枝
int ans[];
bool vis[];//判断某个数出现没
bool flag; void DFS(int step,int num)//step表示第几个字符,num表示已经找到了num个数
{
if(flag) return;//最优性剪枝
if(step==str.size())
{
for(int i=;i<num;i++)
{
if(i==) cout<<ans[i];
else cout<<' '<<ans[i];
}
cout<<endl;
flag=true;
return ;
}
int t=str[step]-'';
if(t<=n&&!vis[t])//搜一位
{
ans[num]=t;
vis[t]=true;
DFS(step+,num+);
vis[t]=false;
}
if(step!=str.size()-)
{
t=t*+str[step+]-'';
if(t<=n&&!vis[t])//搜两位
{
ans[num]=t;
vis[t]=true;
DFS(step+,num+);
vis[t]=false;
}
}
} int main()
{
#ifdef DEBUG
freopen("sample.txt","r",stdin);
#endif
// ios_base::sync_with_stdio(false);
// cin.tie(NULL); cin>>str;
n=str.size()<=?str.size():(str.size()-)/+;
DFS(,); return ;
}

-

计蒜客 置换的玩笑(DFS)的更多相关文章

  1. 计蒜客的一道题dfs

    这是我无聊时在计蒜客发现的一道题. 题意: 蒜头君有一天闲来无事和小萌一起玩游戏,游戏的内容是这样的:他们不知道从哪里找到了N根不同长度的木棍, 看谁能猜出这些木棍一共能拼出多少个不同的不等边三角形. ...

  2. 计蒜客 方程的解数 dfs

    题目: https://www.jisuanke.com/course/2291/182237 思路: 来自:https://blog.csdn.net/qq_29980371/article/det ...

  3. 计蒜客 31451 - Ka Chang - [DFS序+树状数组][2018ICPC沈阳网络预赛J题]

    题目链接:https://nanti.jisuanke.com/t/31451 Given a rooted tree ( the root is node $1$ ) of $N$ nodes. I ...

  4. 计蒜客 青出于蓝胜于蓝(dfs序+树状数组)

    题目描述 武当派一共有 n 人,门派内 n 人按照武功高低进行排名,武功最高的人排名第 1,次高的人排名第 2,... 武功最低的人排名 第 n.现在我们用武功的排名来给每个人标号,除了祖师爷,每个人 ...

  5. 计蒜客 引爆炸弹(DFS、并查集)

    在一个 n×m 的方格地图上,某些方格上放置着炸弹.手动引爆一个炸弹以后,炸弹会把炸弹所在的行和列上的所有炸弹引爆,被引爆的炸弹又能引爆其他炸弹,这样连锁下去. 现在为了引爆地图上的所有炸弹,需要手动 ...

  6. 计蒜客 等边三角形 dfs

    题目: https://www.jisuanke.com/course/2291/182238 思路: 1.dfs(int a,int b,int c,int index)//a,b,c三条边的边长, ...

  7. 计蒜客 买书 dfs

    题目: https://www.jisuanke.com/course/2291/182236 思路: 递归解决,从第一本书开始,每本书都有两种选择: //index是book里面每本书价格的下标, ...

  8. 计蒜客 NOIP 提高组模拟竞赛第一试 补记

    计蒜客 NOIP 提高组模拟竞赛第一试 补记 A. 广场车神 题目大意: 一个\(n\times m(n,m\le2000)\)的网格,初始时位于左下角的\((1,1)\)处,终点在右上角的\((n, ...

  9. [计蒜客] 矿石采集【记搜、Tarjan缩点+期望Dp】

    Online Judge:计蒜客信息学3月提高组模拟赛 Label:记搜,TarJan缩点,树状数组,期望Dp 题解 整个题目由毫无关联的两个问题组合成: part1 问题:对于每个询问的起点终点,求 ...

随机推荐

  1. Django--评论功能实现和用户登录

    1.确定实现评论功能的方式 1.第三方社会化评论插件(有言.多说.网易云跟帖等) 优点:可以直接用,紧急时开发快 缺点:评论存储在第三方,第三方挂了就不弄用 2.Django评论库 django-co ...

  2. C#的listview

    listView1.Items.Clear(); ListViewItem listitem = new ListViewItem(字符串);//这是第一列的内容,需要,而且必须通过构造方法添加 ; ...

  3. 第九篇 AJAX

    AJAX 阅读目录(Content) 概述 AJAX常见应用情景 AJAX的优缺点 jQuery实现的AJAX $.ajax参数 AJAX请求如何设置csrf_token 序列化 Django内置的s ...

  4. P 1019 数字黑洞

    转跳点:

  5. 不同DIV滚动条如何同步?

    $(".DIV").scroll(function(){  $(".target").scrollLeft($(".DIV ").scrol ...

  6. Vulkan SDK 之 Descriptor Set Layouts and Pipeline Layouts

    当我们有了一个uniform buff之后,vulkan 还不知道这个信息,需要通过descriptor进行描述. Descriptors and Descriptor Sets A descript ...

  7. 通过SQL语句操作Sqlite数据库

    一.数据库的创建 数据库版本为1 //Ctrl+Shift+U:大写 public static final String DATABASE_NAME ="zzw.db"; pub ...

  8. JS元素的左右移动

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  9. 《新标准C++程序设计》1.1-1.6(C++学习笔记1)

    1.cout输出 cout<<待输出项<<待输出项2<<···; 2.cin输入 cin>>变量1>>变量2>>···; 3.C ...

  10. hdu 1799 循环多少次?(组合)

    题目是这样的:   我们知道,在编程中,我们时常需要考虑到时间复杂度,特别是对于循环的部分.例如, 如果代码中出现 for(i=1;i<=n;i++) OP ; 那么做了n次OP运算,如果代码中 ...