goddam good!!!- for the greater good

又,据他们说本片戏仿特出无数,小编眼拙只看到“妖夜荒踪”。
有关最后真相,“他不是一人在打仗”,又让自己纪念阿加莎Christie优秀小说《东方快车谋杀案》——踩在有影响的人的肩头上也不轻易,后人总是以为你的当前会有贤人

input

再,那几个评价写得比作者那篇大多了,我们都看望吧:http://www.douban.com/review/1156203/

output

神州时至后天依旧杜门不出主义大行于道,城市被芸芸众生看作樊笼桎梏,动不动就矫情地要回归大自然、爱慕着田园和家乡——冯发行人当年在《甲方乙方》里能够地讽刺过了,没悟出至今还有如此多个人勇往直前撒磨牙。
与天朝上国分歧,英美今昔的大队人马艺术学影视小说中,小镇和乡下遭到了惨酷的捉弄,当然那和话语权精通在源点大城市和当作今世工业的女诗人、发行人以及电影工业有关,甚或只可是是更有益于成为一些电影的背景情况——但是定价权的归属自个儿就曾经看清了城市和乡村之间优劣至少是胜负或手艺的轻重。粗略想了刹那间,作为妖牛鬼蛇神怪的小镇在偏下艺术学影视小说中都有展现:
1、《小城畸人》http://www.douban.com/subject/2038364/
2、House of Wax
http://www.douban.com/subject/1309184/
叁、1部在对象家里看的著名影片,奇幻片,伊始是五个人迷失到了2个小镇,一番打杀之后好轻松逃了出来,片尾是他俩又3回开车到了那几个小镇,故事于是循环往复。
4、Dogville
http://www.douban.com/subject/1298759/
5、本片,hot fuzz
……nnd,想不起来了

本身的解题思路

第三此题的难关正是找到最小的下贰个字典序,所以,作者从1个字符串的末尾往前,实行遍历。

for( int i = length - 2 ; i >= 0 ; i-- )

如果str[i] < str[i+1],找到必要退换的子字符串。为str[i,length)

if( str[ i ] < str[ i + 1 ] ) {

            for( int j = i + 1 ; j < length ; j++ ){
                if( str[i] < str[j] && (!str[j+1]||str[i] >= str[j+1])){
                    char temp = str[i];
                    str[i] = str[j];
                    str[j] = temp;
                    cout<<str<<endl;
                    result = rever(str,i);
                    break;
                }
            } 
            flag = 1;
            break;
        }

// 从[i+1,length) 找到大于str[i],如果有多于一个字符大于str[i],那么就找到最小的哪一个。和str[i],进行交换。最后将str[i+1,length]rever,替换之前的str[i+1,length]。

老探长早年丧失爱人,难熬中心思相当扭曲决定建设协调社会,纠集以色列德国治镇论者建立马甲幕后黑手制,杀人越货谎称事故频发、为了“更加高的善”——偶语于道路者弃市,所谓田园风光、与世无争,黑牢中死尸枕籍,何异暴秦?
betway88客户端,大城市来的腹心警探带来了改制春风,阿夫乐尔号的一声炮响,给桑福德小镇送来了社会主义。幸福的幻象被残酷击碎,1玖8伍残忍现出真相。砰砰砰砰,压在小镇居民身上的叁座大山终于被推翻,原来号称推广着美满人生的芸芸众生最凶险。

原题地址

透过代码

此题大体为找到,字典序的下一个比比较小类别。

heckerrank 算法题。

#include <cmath>
#include <cstdio>
#include <vector>
#include <iostream>
#include <algorithm>

using namespace std;

string rever(string str, int index ){

    string temp = str.substr(index+1);

    int length = temp.length();
    for(int i = 0 ; i< length / 2;i++){
        char aa = temp[i];
        temp[i] = temp[length-i-1];
        temp[length-i-1] = aa;
    }
    string result = str.substr(0,index+1) + temp;
    return result;
}
void handle(string str){
    if( str.length() == 1 ){
        cout<<"no answer"<<endl;
        return;
    }
    int flag = 0;
    int length = str.length();
    string result;
     for( int i = length - 2 ; i >= 0 ; i-- ){
        if( str[ i ] < str[ i + 1 ] ) {

            for( int j = i + 1 ; j < length ; j++ ){
                if( str[i] < str[j] && (!str[j+1]||str[i] >= str[j+1])){
                    char temp = str[i];
                    str[i] = str[j];
                    str[j] = temp;
                    cout<<str<<endl;
                    result = rever(str,i);
                    break;
                }
            } 
            flag = 1;
            break;
        }

     }
     if( flag == 1 ) {
        cout<<result<<endl;
     }else{
        cout<<"no answer"<<endl;
     }

}

int main() {
    int count = 0;

    cin>>count;
    string s[count];
    for( int i = 0 ; i < count ; i++ ){
        cin>>s[i];
        handle(s[i]);
    }

    return 0;
}
dhkc
hcdk
dhck
dkhc