Codeforces 915 C. Permute Digits (dfs)
题目链接:Permute Digits
题意:
给出了两个数字a,b(<=1e18),保证a,b都不带前缀0。用a的字符重组一个数字使这个值最大且小于b。(保证这个值存在)
题解:
这题遇到了不止一遍了,但是每次都会写错~所以感觉很有必要写下来。看到这题,我的第一想法是贪心每次都取最大的。但是这样其实存在很大的漏洞,因为字符个数是有限的如果小的数被取完了大的数填充进去也不符合条件。这题要按DFS的思路去做才行。这里给出按贪心的做法的一组错误数据。
a: 123456789123456789
b: 276193619183618162
my_output: 276193618987554432
answer: 276193618987554432
#include<bits/stdc++.h>
using namespace std;
const int MAX_N = 1e3+;
char vec[MAX_N];
char s[MAX_N];
int res[MAX_N];
char out[MAX_N];
int point;
void dfs(int pos,int flag,int len)
{
if(pos == len)
{
out[len] = '\0';
printf("%s\n",out);
exit();
}
//cout<<"...."<<endl;
int t = pos+point;
if(flag)
{
bool f = true;
for(int j=; j>=; j--)
{
if(res[j])
{
out[pos] = j+'';
res[j]--;
dfs(pos+,flag,len);
res[j]++;
}
}
if(f) return;
}
else
{
bool f = true;
for(int j=s[t]-''; j>=; j--)
{
if(res[j])
{
//cout<<"......"<<j<<"..."<<s[t]<<endl;
out[pos] = j+'';
res[j]--;
if(j==s[t]-'') dfs(pos+,,len);
else dfs(pos+,,len);
res[j]++;
}
}
if(f) return;
} }
int main()
{
int N,M,T;
memset(res,,sizeof(res));
scanf("%s",vec);
scanf("%s",s);
int len = strlen(vec);
for(int i=; i<len; i++) res[vec[i]-'']++;
int l = strlen(s);
point = l - len;
if(point > ) dfs(,,len);
else dfs(,,len);
return ;
}
Codeforces 915 C. Permute Digits (dfs)的更多相关文章
- CodeForces 489C Given Length and Sum of Digits... (dfs)
C. Given Length and Sum of Digits... time limit per test 1 second memory limit per test 256 megabyte ...
- codeforces 580C Kefa and Park(DFS)
题目链接:http://codeforces.com/contest/580/problem/C #include<cstdio> #include<vector> #incl ...
- LeetCode Subsets II (DFS)
题意: 给一个集合,有n个可能相同的元素,求出所有的子集(包括空集,但是不能重复). 思路: 看这个就差不多了.LEETCODE SUBSETS (DFS) class Solution { publ ...
- LeetCode Subsets (DFS)
题意: 给一个集合,有n个互不相同的元素,求出所有的子集(包括空集,但是不能重复). 思路: DFS方法:由于集合中的元素是不可能出现相同的,所以不用解决相同的元素而导致重复统计. class Sol ...
- HDU 2553 N皇后问题(dfs)
N皇后问题 Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Description 在 ...
- 深搜(DFS)广搜(BFS)详解
图的深搜与广搜 一.介绍: p { margin-bottom: 0.25cm; direction: ltr; line-height: 120%; text-align: justify; orp ...
- 【算法导论】图的深度优先搜索遍历(DFS)
关于图的存储在上一篇文章中已经讲述,在这里不在赘述.下面我们介绍图的深度优先搜索遍历(DFS). 深度优先搜索遍历实在访问了顶点vi后,访问vi的一个邻接点vj:访问vj之后,又访问vj的一个邻接点, ...
- 深度优先搜索(DFS)与广度优先搜索(BFS)的Java实现
1.基础部分 在图中实现最基本的操作之一就是搜索从一个指定顶点可以到达哪些顶点,比如从武汉出发的高铁可以到达哪些城市,一些城市可以直达,一些城市不能直达.现在有一份全国高铁模拟图,要从某个城市(顶点) ...
- 深度优先搜索(DFS)和广度优先搜索(BFS)
深度优先搜索(DFS) 广度优先搜索(BFS) 1.介绍 广度优先搜索(BFS)是图的另一种遍历方式,与DFS相对,是以广度优先进行搜索.简言之就是先访问图的顶点,然后广度优先访问其邻接点,然后再依次 ...
随机推荐
- GBK与UTF-8编码错误转换后,无法再正确恢复
字符集错误转换导致的问题 UTF-8格式编码的字节流,按GBK字符集转换为字符串,会出现乱码,这很正常.但将其重新转为字节流,再用UTF-8字符集转为字符串,还是乱码.这就让我产生了疑惑,虽然使用错误 ...
- python基础_类型_tuple
#tuple 元祖,这个没什么特别的,和list差不多,不能删除,不能增加元素,其他功能差不多 #元祖用圆括号扩起来,逗号分隔 a = ('a','b','c') #这玩意一般会用来排除重复,还是很好 ...
- IIS 7 反向代理 URL重写 转发动态请求
一.反向代理是什么 有一篇文章说的挺好的 Nginx 反向代理.负载均衡.页面缓存.URL重写及读写分离详解 http://www.server110.com/nginx/201402/5534.ht ...
- mysql8.0 安装
之前一直使用的是zabbix3.4和mariadb5.5;感觉良好!!!但是...因其他原因需要重新部署 这次规划使用zabbix4.0和mysql8.0结合使用:嗯~~应该不会错吧!!! zabbi ...
- PFC电源设计与电感设计计算学习笔记
PFC电源设计与电感设计计算 更新于2018-11-30 课程概览 常见PFC电路和特点1 常见PFC电路和特点1 CRM PFC电路设计计算 CCM PFC电路设计计算 CCM Interleave ...
- 成为技术领导者笔记--领导的MOI模型
一. 想让周围环境发生变化,环境必须包含三个条件: M:激励(Motivation)---有奖品或有困难,这样才对相关人员有推动力或吸引力. O:组织(organization)---利用现有的组织结 ...
- Visual Studio 2013 Web开发新特性
微软正式发布Visual Studio 2013 RTM版,微软还发布了Visual Studio 2013的最终版本..NET 4.5.1以及Team Foundation Server 2013. ...
- CI 2.2 + smarty 3.1.18 完美整合配置成功
CI 2.2 + smarty 3.1.18 配置成功 一.准备文档下载 (CI 框架和smarty) 二.将Smarty-3.1.18 源码包里面的libs文件夹copy到ci的项目目录appli ...
- spring中MessageSource的配置使用方法1[转]
本文转载仅供自己学习收录,不做任何商业用途,如有需要请访问文章原地址:http://blog.csdn.net/qyf_5445/article/details/8124306 Spring定义了访问 ...
- swift的enum基础
其它语言的枚举: 符号化的整型常量的集合: swift的枚举: 可以是任何基础类型和无类型: If you are familiar with C, you will know that C enum ...