http://acm.hdu.edu.cn/showproblem.php?pid=6351

题意:任意交换两个数至多k次求得到的最大的数和最小的数

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
string maxs,mins;
int n;
/**求最小深搜**/
void dfs1(int now,int k,string st) //顶指针,交换剩余次数,当前字符串
{int i,minn;if(k==0||now==n){if(st<mins){mins=st;}return;}if(now==0) //第一位,此时不能有前导零{minn=now;for(i=now+1;i<n;i++){if(st[i]!='0'&&st[i]<=st[minn]&&st[i]!=st[now]){minn=i;}}if(minn!=now){for(i=now+1;i<n;i++){if(st[i]==st[minn]){string s=st;swap(s[now],s[i]);dfs1(now+1,k-1,s); //有交换情况,交换}}}elsedfs1(now+1,k,st);  //无交换情况,不交换,顶指针进一位}else// 非第一位{minn=now;for(i=now+1;i<n;i++){if(st[i]<=st[minn]&&st[i]!=st[now]){minn=i;}}if(minn!=now){for(i=now+1;i<n;i++){if(st[i]==st[minn]){string s=st;swap(s[now],s[i]);dfs1(now+1,k-1,s);}}}elsedfs1(now+1,k,st);}return;
}
/**求最大深搜,和上面一样**/
void dfs2(int now,int k,string st)
{int i,maxn;if(k==0||now==n){if(st>maxs){maxs=st;}return;}if(now==0){maxn=now;for(i=now+1;i<n;i++){if(st[i]!='0'&&st[i]>=st[maxn]&&st[i]!=st[now]){maxn=i;}}if(maxn!=now){for(i=now+1;i<n;i++){if(st[i]==st[maxn]){string s=st;swap(s[now],s[i]);dfs2(now+1,k-1,s);}}}elsedfs2(now+1,k,st);}else{maxn=now;for(i=now+1;i<n;i++){if(st[i]>=st[maxn]&&st[i]!=st[now]){maxn=i;}}if(maxn!=now){for(i=now+1;i<n;i++){if(st[i]==st[maxn]){string s=st;swap(s[now],s[i]);dfs2(now+1,k-1,s);}}}elsedfs2(now+1,k,st);}return;
}
int main()
{int t;scanf("%d",&t);while(t--){int k;string s;cin>>s;scanf("%d",&k);mins=s;n=s.length();dfs1(0,k,s);cout<<mins<<" ";maxs=s;dfs2(0,k,s);cout<<maxs<<endl;}
}

hdu 6351 Beautiful Now相关推荐

  1. hdu 5062 Beautiful Palindrome Number(水题)

    题目链接:hdu 5062 Beautiful Palindrome Number 题目大意:略. 解题思路:暴力或者手算都可以,注意手算的话,分别算出1,2,3...位的情况后,答案是累加上去的. ...

  2. HDU Redraw Beautiful Drawings 推断最大流是否唯一解

    点击打开链接 Redraw Beautiful Drawings Time Limit: 3000/1500 MS (Java/Others)    Memory Limit: 65536/65536 ...

  3. hdu - 4346 - beautiful road - 枚举+想法

    题意: 给出一个字符串,字符串由"R","G","?"组成,若字符串存在2个R,且2个R中间是一个G,则称该串为"漂亮串" ...

  4. HDU Redraw Beautiful Drawings 判断最大流是否唯一解

    点击打开链接 Redraw Beautiful Drawings Time Limit: 3000/1500 MS (Java/Others)    Memory Limit: 65536/65536 ...

  5. 题解报告(CDUT暑期集训——第五场)

    题解报告(CDUT暑期集训--第五场) B - Beautiful Now HDU - 6351 思路:直接暴力全排列就行了 最多\(10!\)次 题目限制2500ms 全排列大概是2000多ms(最 ...

  6. ACM比赛经验、刷题记录及模板库总结(更新中)

    前言 本文所提及的部分题目代码,可以在我的Github上找到 第一部分 经验分享及感受 第二部分 刷题记录 一.基础算法&程序语言 //strlen()函数的复杂度是O(n)要小心 //截取字 ...

  7. 解题报告 (十四) 数位DP

    文章目录 数位DP 解题报告 HDU 4722 Good Numbers HDU 2089 不要62 HDU 3555 Bomb HDU 3652 B-number PKU 3252 Round Nu ...

  8. 翁凯c语言单词长度,中国大学MOOC-C程序设计(浙大翁恺)—— 单词长度

    题目内容: 你的程序要读入一行文本,其中以空格分隔为若干个单词,以'.'结束.你要输出这行文本中每个单词的长度.这里的单词与语言无关,可以包括各种符号,比如"it's"算一个单词, ...

  9. HDU 4888 Redraw Beautiful Drawings(网络流求矩阵的解)

    论文<为什么很多网络流问题总有整数解>http://diaorui.net/archives/189: 参考:http://www.cnblogs.com/yuiffy/p/3929369 ...

最新文章

  1. CentOS 6.5 下配置Java环境
  2. 《The Age of Surge》作者访谈
  3. python 串口上位机_如何使用Python开发串口通讯上位机(二)
  4. [并发编程] - 操作系统底层工作原理
  5. DPM2010恢复exchange2010单个用户邮箱邮件
  6. 微信小程序——账号及开发工具
  7. drill apache_使用Apache Drill REST API通过Node构建ASCII仪表盘
  8. 16进制加法 keil_C/C++编程笔记:C语言进制详解,二进制、八进制和十六进制
  9. 【飞秋怎么用】企业应用
  10. Python语法入门
  11. 高性能缓存服务器Varnish架构配置
  12. 【数据结构】栈的存储实现
  13. 计算机操作系统--UNIX操作系统
  14. 计算机在录制声音过程中流向,Bandicam中录制电脑声音的具体流程介绍
  15. Python暴力破解ZIP文件密码
  16. Editplus 使用技巧大全
  17. nginx 499错误原因及解决
  18. 采集用python还是火车头_我才知道爬虫也可以酱紫--火车采集器
  19. 第三章 输入验证----tapestry教程Enjoying Web DevelopmenEnjoying Development翻译
  20. workman实现websocket聊天nginx的配置

热门文章

  1. 豆瓣python网络数据采集器代理_Python 网络数据采集1
  2. python excel操作xlwt_关于python操作excel,xlwt,xlwd,最简单的操作介绍
  3. 手机上有没有学python的软件-盘点几个在手机上可以用来学习编程的软件
  4. 自学python买什么教材-学习Python的正确姿势—基础教学,教科书该怎么买?
  5. 学python买什么书-想学python看哪些书
  6. python工资一般多少西安-干货|python人工智能工程师工资多少钱
  7. python从入门到精通pdf-跟老齐学Python从入门到精通
  8. 全球最大语音识别公司Nuance的衰落与自我救赎
  9. 人工智能时代,语音识别领域前景广阔
  10. php使用jasperreport,用PHP访问JasperReport | 学步园