置换的玩笑——DFS&&暴力
题目
题意:一个$1$到$n$的序列被去掉空格,需要将其还原。例如$4111109876532$可还原成$4 \ 1 \ 11 \ 10 \ 9 \ 8 \ 7 \ 6 \ 5 \ 3 \ 2$。字符串的长度在$1$到$100$之间。
解决方法
由于是1到n的序列,根据长度可以求出n。
由于长度不超过100,所以n不超过54,即最多两位数。因此只需分别取首部的1位和2位,进行记录,对剩下的递归。
#include<bits/stdc++.h>
using namespace std; const int maxn = +;
char s[maxn];
int n, len; int getnum1(int index)
{
return s[index] - '';
}
int getnum2(int index)
{
return (s[index] - '') * + s[index + ] - '';
} int res[maxn];
bool vis[maxn];
int cnt = ;
bool dfs(int index)
{
if(index >= len)
{
bool flag = true;
for(int i = ; i < n;i++)
if(!vis[i]) flag = false;
if(flag)
{
for(int i = ;i < cnt;i++)
printf("%d%c", res[i], i == cnt - ? '\n' : ' ');
return true;
}
return false;
} int num1 = getnum1(index);
if(num1 > n) return false;
if(!vis[num1])
{
vis[num1] = true;
res[cnt++] = num1;
if(dfs(index + )) return true; vis[num1] = false;
cnt--;
} int num2 = getnum2(index);
if(num2 > || num2 > n) return false; //长度为100,n最大为54 if(index < len - && !vis[num2])
{
vis[num2] = true;
res[cnt++] = num2;
if(dfs(index + )) return true; vis[num2] = false;
cnt--;
} return false;
} int main()
{
scanf("%s", s);
len = strlen(s);
if(len <= ) n = len;
else n = (len - ) / + ; dfs(); return ;
}
置换的玩笑——DFS&&暴力的更多相关文章
- ACM: FZU 2107 Hua Rong Dao - DFS - 暴力
FZU 2107 Hua Rong Dao Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I6 ...
- ACM: Gym 100935G Board Game - DFS暴力搜索
Board Game Time Limit:2000MS Memory Limit:65536KB 64bit IO Format:%I64d & %I64u Gym 100 ...
- hdu 5612 Baby Ming and Matrix games(dfs暴力)
Problem Description These few days, Baby Ming is addicted to playing a matrix game. Given a n∗m matr ...
- hdu 1010 Tempter of the Bone(dfs暴力)
Problem Description The doggie found a bone in an ancient maze, which fascinated him a lot. However, ...
- NOIP 2002提高组 选数 dfs/暴力
1008 选数 2002年NOIP全国联赛普及组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 Description 已知 n 个整数 x1,x2,…, ...
- 计蒜客 置换的玩笑(DFS)
传送门 题目大意: 小蒜头又调皮了.这一次,姐姐的实验报告惨遭毒手. 姐姐的实验报告上原本记录着从 1 到 n 的序列,任意两个数字间用空格间隔.但是“坑姐”的蒜头居然把数字间的空格都给删掉了,整个数 ...
- Codeforces Round #313 (Div. 1) B. Equivalent Strings DFS暴力
B. Equivalent Strings Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/559 ...
- UVaLive 6625 Diagrams & Tableaux (状压DP 或者 DFS暴力)
题意:给一个的格子图,有 n 行单元格,每行有a[i]个格子,要求往格子中填1~m的数字,要求每个数字大于等于左边的数字,大于上边的数字,问有多少种填充方法. 析:感觉像个DP,但是不会啊...就想暴 ...
- hdu 1427 速算24点 dfs暴力搜索
速算24点 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Problem De ...
随机推荐
- Python if __name__ == '__main__': 理解
if __name__ == '__main__':是为了区分.py文件是自己直接被执行还是被其他文件调用. 当.py文件直接被执行时,默认的是 __name__ = '__main__',因此条件成 ...
- Vue.js + Element.ui 从搭建环境到打包部署
一.搭建环境 由于新的node已经集成了npm,所以直接安装node,前往node官网下载最新版本的node,根据自己的操作系统选择相应的包,按照步骤一步步走就可以,这里不做过多介绍. 安装好后可以打 ...
- 记搜狗一次不成功的Python后端面试经历
面试搜狗Python后端结束快一个月了,终于有时间来做一个简单的总结了. 简介:工作不久,基础后端岗位,一面结束,失败. 先做了几个笔试题,面试开始会根据笔试题问一些内容.下面将整理一下还能想起来的内 ...
- 网络流Dinic--模板
#define IOS ios_base::sync_with_stdio(0); cin.tie(0); #include <cstdio>//sprintf islower isupp ...
- Centos7下,宿主机nginx配合docker环境的php-fpm
一.安装docker并启动 yum install docker systemctl start docker 二.安装nginxCentOS 7默认不能从yum中安装nginx,原因可以自己搜索一下 ...
- git 使用2
安装 1.下载对应版本:https://git-scm.com/download 2.安装git:在选取安装路径的下一步选取 Use a TrueType font in all console wi ...
- MySQL 按照日期格式查询带有时间戳数据
按照日期格式查询带有时间戳数据一般在MSQL数据库中的时间都是以时间戳的格式来存储时间的,但是对于我们来说,时间戳格式具体表示的是什么时间,我们很难一眼看出来,所以当我们要具体查询某一个时间或时间段的 ...
- python 基础例子 双色球 查询天气 查询电话
# 随机生成双色球import random# 随机数 1-16之间# r = random.randint(1,16)# print(r)phone_numbers_str = "匪警[1 ...
- 基于白名单的Payload
利用 Msiexec 命令DLL反弹 Msiexec是Windows Installer的一部分.用于安装Windows Installer安装包(MSI),一般在运行Microsoft Update ...
- Vasya's Function CodeForces - 837E (gcd)
大意: 给定$a,b$, $1\le a,b\le 1e12$, 定义 $f(a,0)=0$ $f(a,b)=1+f(a,b-gcd(a,b))$ 求$f(a,b)$. 观察可以发现, 每次$b$一定 ...