首页 > Web开发 > 详细

CF 1281B Azamon Web Services

时间:2019-12-21 11:28:37      阅读:83      评论:0      收藏:0      [点我收藏+]

原题链接:http://codeforces.com/problemset/problem/1281/B

题目大意: 给你两个字符串 s 和 c ,最多经过一次变换,使s的字典序小于c,输出变换后的s ,如果不成立输出---

 

思路: 直接对s进行遍历,找到经过一次变换后字典序最小的s。 要找字典序最小的s,变换时就要将位置靠后的,字典序小的换到前面。

ABACA    AABBC 

 

代码

#include <cstdio>
#include <iostream>
#include <algorithm>
#include <cstring>
#include <string>
#include <stack>
#include <queue>
#include <cmath>
#define ll long long
#define pi 3.1415927
#define inf 0x3f3f3f3f
using namespace std;
string s,c,kk;
int main ()
{
    int n,m,i,t,sum,j,k,f=0;
    cin>>n;
    while(n--)
    {
        cin>>s>>c;
        k=s.length();
        f=0;
        for(i=0;i<k-1;++i){
            int jj=i;
            for(t=k-1;t>=jj+1;--t)
            {
            if(s[i]>s[t])
                i=t,j=t,f=1;  ///从后往前遍历,如果当前字符小的话就记录下来,
            }
            if(f){
                swap(s[jj],s[j]);  ///jj是记录的第一层循环的 i  ,j是找到的靠后的最小的字符
                break;
            }
        }
        //cout<<s<<endl;
        if(s<c)
            cout<<s<<endl;
        else
            cout<<"---"<<endl;
    }
    return 0;
}

CF 1281B Azamon Web Services

原文:https://www.cnblogs.com/blowhail/p/12076074.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!