(北大ACM 1146 题:ID Codes)
今天做一道简单的ACM题(http://acm.pku.edu.cn/JudgeOnline/problem?id=1146),题目意思是对一个字符串中的字符进行排列组合,找出按字母表顺序排列的下一个字符串。
自己研究了半天,找到一些规律,从后往前遍历字符串,找到第一个降序的字苻(如abecb中的前一个b),对从这个字符开始的子串(becb)进行排序(得到bbce),再把子串从前往后第一个字符(b)跟第一个不相同的字符(c)交换(得到cbbe),则得到最终结果(acbbe)。
按照这个思路写出程序:
==================================
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
int main()
{ string s;
while (cin>>s && s!="#")
{ int i=s.size()-1;
bool b=true;
while (i>0)
{