题意:有n个数(n<=50)写在一行,将两数之间的空格去掉得到一个数字串。根据这个数字串回复原数;

思路:先求数的个数,当串长度小于10时,均为个位数;当串长度大于9时,存在两位数,剪去9个个位数,同样得到数的个数;

数的个数也是串中的最大数;

采用枚举的方法将每个数与串中的位置匹配,属于同一个数的数字对应同一个数;

输出时,两位数的数字间不加空格;

#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
char str[105];
int len,mark;
int vis[505];
void dfs(int n)
{if(n==0){mark=1;return;}if(mark) return;if(n>=10){char temp1=n/10+'0';char temp2=n%10+'0';for(int i=0;i<len-1;i++){if(!vis[i]&&!vis[i+1]&&str[i]==temp1&&str[i+1]==temp2){vis[i]=n;vis[i+1]=n;dfs(n-1);if(mark) return;vis[i]=0;vis[i+1]=0;}}}else{for(int i=0;i<len;i++){if(!vis[i]&&(str[i]-'0')==n){vis[i]=n;dfs(n-1);if(mark) return;vis[i]=0;}}}
}
int main()
{int i,j,k,num;freopen("joke.in","r",stdin);freopen("joke.out","w",stdout);while(scanf("%s",&str)!=EOF){len=strlen(str);memset(vis,0,sizeof(vis));mark=0;if(len<10){num=len;}elsenum=(len-9)/2+9;dfs(num);printf("%c",str[0]);for(i=1;i<len;i++){if(vis[i]==vis[i-1])printf("%c",str[i]);else printf(" %c",str[i]);}printf("\n");}return 0;
}

转载于:https://www.cnblogs.com/dashuzhilin/p/4639403.html

Gym 100553J Jokewithpermutation(dfs)相关推荐

  1. DFS Gym 100553J Jokewithpermutation

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

  2. Gym - 100989J -(DFS)

    题目链接:http://codeforces.com/gym/100989/problem/J J. Objects Panel (A) time limit per test 1.0 s memor ...

  3. 【Codeforces Gym - 101635C Macarons 】【矩阵快速幂+状压】【dfs时间换空间】

    [链接] http://codeforces.com/gym/101635/attachments [题意] 求用1*1,1*2的方格填n*m的矩阵的方法数 [知识点] 状压dfs+矩阵快速幂 [分析 ...

  4. 图论 ---- 构造DFS树的思想 K - Boomerangs Gym - 102001K

    题目链接 题目大意: 解题思路: 启发性思考首先我们先图切成dfs树,然后给图一个稳定结构之后,我们就可以去构造了 对于每个点我们从第底端开始构造每次把每次点的儿子两两匹配,如果是奇数个儿子就把多出来 ...

  5. Gym - 101480K_K - Kernel Knights (DFS)

    题意:有两队骑士各n人,每位骑士会挑战对方队伍的某一个位骑士. (可能相同) 要求找以一个区间s: 集合S中的骑士不会互相挑战. 每个集合外的骑士必定会被集合S内的某个骑士挑战. 题解:讲真被题目绕懵 ...

  6. Gym - 101972B Arabella Collegiate Programming Contest (2018) B. Updating the Tree 树DFS

    题面 题意:T组数据,每次给你1e5个点的树(1为根),每个点有一权值,询问1-n每个节点的子树中, 至少修改几个点的权值(每次都可以任意修改),才能让子树中任意2点的距离==他们权值差的绝对值 无解 ...

  7. Gym - 102460A Rush Hour Puzzle(dfs迭代加深)

    题目链接:点击查看 题目大意:给出一个 6 * 6 的矩阵,表示华容道的游戏界面,现在需要红色汽车(标号为 1 )从第三行最右端到达出口的最短时间,如果无解或者步数超过 10 输出 -1 题目分析:因 ...

  8. Gym 101147J Whistle's New Car(dfs)

    https://vjudge.net/problem/Gym-101147J 题意: 有n个城市,每个城市有一个权值,表示在这个城市的加油站可以加多少油. 现在要计算每个城市i,有多少个城市j可以到达 ...

  9. Codeforces Gym 101142 G Gangsters in Central City (lca+dfs序+树状数组+set)

    题意: 树的根节点为水源,编号为 1 .给定编号为 2, 3, 4, -, n 的点的父节点.已知只有叶子节点都是房子. 有 q 个操作,每个操作可以是下列两者之一: + v ,表示编号为 v 的房子 ...

最新文章

  1. vb.net与matlab的混合编程
  2. macOS新版本终于删掉自带Python2,这波操作连Python死忠粉都叫好
  3. Windows dos 在某个目录下的所有文件中查找包含某个字符串的文件
  4. IDEA的常用快捷键
  5. java保存图片进度条_Java上传文件进度条的实现方法(附demo源码下载)
  6. 用redis实现消息队列
  7. WebSocket实战
  8. 依赖于boodtrap3的插件推荐以及bootrap发展前景
  9. 微软超融合私有云测试02-测试架构描述
  10. 金蝶k3服务器的操作系统,金蝶k3服务器配置工具
  11. java 安全策略_java.security.Security 支持的安全策略和算法
  12. 全息投影特效制作详解
  13. Beyond Part Models: Person Retrieval with Refined Part Pooling (and A Strong Convolutional Baseline)
  14. 动态FormBean
  15. bootstrap 表头组合
  16. 绩效管理工具OKR与GRAD
  17. 武林高手?敏捷开发,唯velocity取胜
  18. C语言/C++编程学习:和QT零距离接触的意义
  19. ios 使用隐私条款
  20. 计算机电路板 接地,pcb电路板接地怎么接

热门文章

  1. matlab期权定价模型比较,期权定价模型与数值方法(Matlab+Jupyter Notebook)
  2. 批量修改txt内容_不用再慢慢手动修改,用Excel批量修改文件名
  3. KXD黑夜模式流星滑落个人主页HTML源码
  4. sleek大气后台UI管理系统模板
  5. windows环境下memcache服务器使用经验
  6. FullCalendar 六:FullCalendar应用——拖动与实时保存
  7. Linux shell中的那些小把戏
  8. 爬虫入门五(Phantomjs和selenium)
  9. Linux内核中container_of宏的理解
  10. 【python命名规范】谷歌风格命名