C++置换的玩笑
小蒜头又调皮了。这一次,姐姐的实验报告惨遭毒手。
姐姐的实验报告上原本记录着从 1 到 n 的序列,任意两个数字间用空格间隔。但是“坑姐”的蒜头居然把数字间的空格都给删掉了,整个数字序列变成一个长度为 1 到 100 的且首部没有空格的数字串。
现在姐姐已经怒了,蒜头找你写个程序快点把试验数据复原。
输入:
输入文件有一行,为一个字符串——被蒜头搞乱的实验数据。
字符串的长度在 1 到 100 之间。
输出:
输出共一行,为姐姐的原始测试数据—— 1 到 n 的输出。
任意两个数据之间有一个空格。
如果有多组符合要求的正确解,输出其中任意一组即可。
本题答案不唯一,符合要求的答案均正确
样例输入复制
4111109876532
样例输出复制
4 1 11 10 9 8 7 6 5 3 2
思路:
①因为是1到100的数列,所以可能是一位数也可能是两位数,给定的数字串,先用len计算出输出数的个数,之后用数字b来保存即将输出的数。
②用x代表即将输出的数,先判断之前输出数之中有没有一样的数,如果没有的话就用数组b 来保存x的值,随后用递归函数将下一个数传递给函数def;如果有的话,就说明x将要输出的数是两位数,就用x保存两个数字,用b来保存x的值,并且将下下个数传递给函数def。
③最后当判断出所有数字都用数组b保存完毕,按照输出一个b中的数就输出的一个空格的格式输出。
#include<iostream>
#include<string>
using namespace std;
char a[];
int len, n, b[];
bool f, vis[];
void def(int s, int num)
{
if (f) return ;
if (s == len)
{
f = true;
for (int i = ;i < num;++i)
{
cout << b[i] << " ";
}
return ;
}
int x = a[s] - '';
if (!vis[x] && x <= n && x > )
{
vis[x] = true;
b[num] = x;
def(s + , num + );
vis[x] = false;
}
x = x * + a[s + ] - '';
if (!vis[x] && x <= n && x > )
{
vis[x] = true;
b[num] = x;
def(s + , num + );
vis[x] = false;
}
}
int main() {
cin >> a;
len = strlen(a);
n = (len <= ? len:(len - ) / + );
def(, );
}
C++置换的玩笑的更多相关文章
- 置换的玩笑——DFS&&暴力
题目 链接 题意:一个$1$到$n$的序列被去掉空格,需要将其还原.例如$4111109876532$可还原成$4 \ 1 \ 11 \ 10 \ 9 \ 8 \ 7 \ 6 \ 5 \ ...
- 计蒜客 置换的玩笑(DFS)
传送门 题目大意: 小蒜头又调皮了.这一次,姐姐的实验报告惨遭毒手. 姐姐的实验报告上原本记录着从 1 到 n 的序列,任意两个数字间用空格间隔.但是“坑姐”的蒜头居然把数字间的空格都给删掉了,整个数 ...
- [LeetCode] LFU Cache 最近最不常用页面置换缓存器
Design and implement a data structure for Least Frequently Used (LFU) cache. It should support the f ...
- [LeetCode] Longest Repeating Character Replacement 最长重复字符置换
Given a string that consists of only uppercase English letters, you can replace any letter in the st ...
- 页置换算法FIFO、LRU、OPT
页置换算法FIFO.LRU.OPT 为什么需要页置换 在地址映射过程中,若在页面中发现所要访问的页面不再内存中,则产生缺页中断.当发生缺页中断时操作系统必须在内存选择一个页面将其移出内存,以便为即将调 ...
- POJ2369 Permutations(置换的周期)
链接:http://poj.org/problem?id=2369 Permutations Time Limit: 1000MS Memory Limit: 65536K Total Submi ...
- POJ1026 Cipher(置换的幂运算)
链接:http://poj.org/problem?id=1026 Cipher Time Limit: 1000MS Memory Limit: 10000K Total Submissions ...
- 在Excel中把横行与竖列进行置换、打勾号
在Excel中把横行与竖列进行置换:复制要置换的单元,在新的单元上右键->选择性复制,会出现对话框,选中“置换”,即可在Excel中打勾号,左手按住ALT不放,右手在小键盘也就是右边的数字键盘依 ...
- 操作系统页面置换算法(opt,lru,fifo,clock)实现
选择调出页面的算法就称为页面置换算法.好的页面置换算法应有较低的页面更换频率,也就是说,应将以后不会再访问或者以后较长时间内不会再访问的页面先调出. 常见的置换算法有以下四种(以下来自操作系统课本). ...
随机推荐
- Dart函数
函数 Dart是一种真正的面向对象的语言,所以即使是函数也是对象,并且有一个类型Function.这意味着函数可以赋值给变量或作为参数传递给其他函数,这是函数式编程的典型特征.同时意味着在Dart语言 ...
- Javascript 组成:ECMAscript、Dom、Bom
一.核心(ECMAScript) ECMAScript 定义的只是这门语言的基础,而在此基础之上可以构建更完善的脚本语言. 二.浏览器对象模型(BOM)——对应window对象 window:窗口 w ...
- 简单了解InnoDB底层原理
存储引擎 很多文章都是直接开始介绍有哪些存储引擎,并没有去介绍存储引擎本身.那么究竟什么是存储引擎?不知道大家有没有想过,MySQL是如何存储我们丢进去的数据的? 其实存储引擎也很简单,我认为就是一种 ...
- python学习笔记1 -- 函数式编程之高阶函数 sorted排序
python提供了很强大的内置排序函数,妈妈再也不担心我不会写冒泡排序了呀,sorted函数就是这个排序函数,该函数参数准确的说有四个,sorted(参数1,参数2,参数3,参数4). 参数1 是需要 ...
- 因为不知道Java的CopyOnWriteArrayList,面试官让我回去等通知
先看再点赞,给自己一点思考的时间,微信搜索[沉默王二]关注这个靠才华苟且的程序员.本文 GitHub github.com/itwanger 已收录,里面还有一线大厂整理的面试题,以及我的系列文章. ...
- CSS两列布局的N种实现
一.什么是两列布局 两列布局分为两种,一种是左侧定宽.右侧自适应,另一种是两列都自适应(即左侧宽度由子元素决定,右侧补齐剩余空间).在CSS面试题里面属于常考题,也是一个前端开发工程师必须掌握的技能, ...
- PHP shuffle() 函数
实例 把数组中的元素按随机顺序重新排列: <?php$my_array = array("red","green","blue",&q ...
- PHP imagecolorallocate - 为一幅图像分配颜色
imagecolorallocate — 为一幅图像分配颜色.高佣联盟 www.cgewang.com 语法 int imagecolorallocate ( resource $image , in ...
- C/C++编程笔记:C语言开发经典游戏项目《五子棋》,内含源码
上一节给大家分享了扫雷游戏的源代码,本篇文章当然也不会让大家失望,专门针对C语言入门或者学习了部分知识之后的小伙伴来练手的游戏项目——<五子棋大战>,本期并不是使用的easyX,因为考虑到 ...
- Xposed原理分析
目录 安卓系统启动 什么zygote? 安卓应用运行? Xposed介绍 Xposed构成 Xposed初始化大体工作流程 源码分析 初始化 app_main#main app_main#initia ...