http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=82

老套路了, dfs + 剪枝. 我超时了好几次啊 失误,失误,忘记剪枝了.

 1 //
 2 //  main.cpp
 3 //  uva146
 4 //
 5 //  Created by ello on 12/3/13.
 6 //  Copyright (c) 2013 NextLife. All rights reserved.
 7 //
 8
 9 #include <iostream>
10 #include <string>
11 #include <map>
12 #include <algorithm>
13 using namespace std;
14
15 string str;
16 string str2;
17 map<char, int> maps;
18
19 bool dfs(int cur) {
20     if (cur == str2.size()) {
21         if (str2 <= str) {
22             return false;
23         }
24         return true;
25     }
26     map<char, int>::iterator it;
27     for (it = maps.begin(); it != maps.end(); it++) {
28         long num = count(str2.begin(), str2.begin() + cur, (*it).first);
29         if ((*it).second > num) {
30             str2[cur] = (*it).first;
31 //            cout<<cur<<','<<str2<<endl;
32             if (str2.substr(0, cur + 1) < str.substr(0, cur + 1) || !dfs(cur + 1)) {
33                 continue;
34             } else {
35                 return true;
36             }
37         }
38     }
39     return false;
40 }
41
42 int main(int argc, const char * argv[])
43 {
44     while (getline(cin, str)) {
45
46         if (str == "#") {
47             break;
48         }
49         maps.clear();
50         for (unsigned int i = 0; i < str.size(); ++i) {
51             maps[str[i]] += 1;
52         }
53         str2 = str;
54         bool flag = false;
55         for (unsigned int i = 1; i < str2.size(); ++i) {
56             if (str2[i] > str2[i - 1]) {
57                 flag = true;
58                 break;
59             }
60         }
61         if (flag && dfs(0)) {
62             cout<<str2<<endl;
63         } else {
64             cout<<"No Successor"<<endl;
65         }
66     }
67     return 0;
68 }

转载于:https://www.cnblogs.com/NextLife/p/3460478.html

[uva] 146 - ID Codes相关推荐

  1. Brute Force STL --- UVA 146 ID Codes

     ID Codes  Problem's Link:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&a ...

  2. UVA 146 ID Codes

    无耻地使用了STL,BS自己. 关于next_permutation的用法:http://www.slyar.com/blog/stl_next_permutation.html CODE: #inc ...

  3. π-Algorithmist分类题目(3)

    原题网站:Algorithmist,http://www.algorithmist.com/index.php/Main_Page π-Algorithmist分类题目(3) Probability ...

  4. π-Algorithmist分类题目(1)

    原题网站:Algorithmist,http://www.algorithmist.com/index.php/Main_Page π-Algorithmist分类题目(1) Sorting UVAL ...

  5. 提取了下刘汝佳推荐的题号...

    今天闲来没事上uva oj提取了下刘汝佳推荐的acm题号,原始数据如下: Volume 0. Getting Started    10055 - Hashmat the Brave Warrior ...

  6. 初学者acm的练习题指南

    上机练习题参考题 忘了在哪找的啦~~希望对大家有帮助呦 <!--[if !supportLists]-->1.    <!--[endif]-->Programming Bas ...

  7. UVa Online Judge 工具網站

    UVa Online Judge 工具網站 转自http://www.csie.ntnu.edu.tw/~u91029/uva.html Lucky貓的ACM園地,Lucky貓的 ACM 中譯題目 M ...

  8. ICPC训练联盟2021寒假冬令营(9)_2021.01.29_笔记

    试题链接 点我进入代码提交OJ 学习笔记 - 数论与组合分析入门 数论的编程实验 • 3.1素数运算的实验范例 • 3.2求解不定方程和同余方程的实验范例 • 3.3 特殊的同余式 • 3.4 积性函 ...

  9. ACM 网址和一些建议

    USACO http://ace.delos.com/usacogate 美国著名在线题库,专门为信息学竞赛选手准备 TJU http://acm.tongji.edu.cn/ 同济大学在线题库,唯一 ...

最新文章

  1. kotlin定义变量
  2. AndroidStudio 解决Android方法数超过65535的问题
  3. solver.prototxt参数说明(一)
  4. 双指针 - 四数之和
  5. Android Studio缓存文件夹配置
  6. CentOS 安装过程中格式化 SATA 硬盘巨慢的问题
  7. 替代JavaOne 2013
  8. Qt:Qt实现Winsock网络编程—TCP服务端和客户端通信(多线程)
  9. codeforces C. Inna and Huge Candy Matrix 解题报告
  10. 设计模式笔记八:过滤器模式
  11. 安卓mqtt调试工具_MOTT工具调试阿里云物联网平台
  12. SpringBoot2.1.5(33)---SpringBoot整合 Thymeleaf 模板引擎
  13. 计算复杂度:P、NP、NP 完备
  14. ubuntu16.04装机1:安装NVIDIA显卡驱动(下载.run包方式)
  15. 在构造函数中释放对象本身
  16. Matlab2017b配置C++/C/Fortan编译器的问题(已解决)
  17. 斐讯N1救砖指南!值得收藏
  18. 服务器在线测速系统源码
  19. 3DLC系列之:自动匹配颜色
  20. MySQL 系统自带的数据库有哪些?每个数据库的作用是什么?

热门文章

  1. 内存管理2(主讲MRR)
  2. 调试器工作原理--CPU软件断点/硬件断点/单步执行标识
  3. Spark源码分析之Checkpoint机制
  4. scala基础之控制结构
  5. (85)Vivado 多周期路径约束情况
  6. boost 单io_serverce 异步多线程资源保护代码
  7. 基于ARM IP的看门狗设计与功能验证
  8. java线程等待_java 中线程等待与通知的实现
  9. Pentium的指令系统(1)——Pentium的寻址方式
  10. DM8168 --交叉编译ARM版 Qt (qt-everywhere-opensource-src-4.8.4)