问题标题: 酷町堂:2626 挑选字符

0
0
已解决
汪恺恒
汪恺恒
中级启示者
中级启示者

题目描述 Description

现在有一个长度为N的字符串,每次可以从字符串的开头或者结尾挑选一个字符,加到一个新字符串后面,新字符串初始是空串,被挑选的字符要在原串里删除。要使最终的新字符串字典序最小,求出这个字典序最小的新字符串。每行最多输出80个字符。

字典序是单词按字母顺序排列的方法。例如,“B"的字典序大于"A”;“ABD"的字典序大于"ABC”。

输入描述 Input Description

第一行,一个整数,N
接下来N行,每行一个大写字母

输出描述 Output Description

输出字典序最小的新字符串

 

WA30

#include<bits/stdc++.h>
#include<iostream>
#pragma GCC optimize(3)
using namespace std;
char s[10000005];
int n;
bool f(int i,int j){  
    if(s[i]>s[j]) return true;
    if(s[i]<s[j]) return false;
    while(s[i]==s[j]&&i<=j){
        i++;
        j--;
    }
    if(s[i]>s[j]) return true;
    else return false;
}
int main(){
    cin>>n;
    for(int i=1;i<=n;i++){
        cin>>s[i];
    }
    int i=1,j=n;
    while(i<=j){
        if(f(i,j)){
            cout<<s[j];
            j--;
        }else{
            cout<<s[i];
            i++;
        }
    }        
    return 0; 
}

 


1
已采纳
张帆
张帆
中级天翼
中级天翼
     cnt++;
        if(cnt%80==0) cout<<endl;

每行最多输出80个字符,你忘啦。

0
周琪岳
周琪岳
资深光能
资深光能

f函数中i<=j改为i<j

周琪岳在2021-02-19 17:13:58追加了内容

每80个没换行

0
汪宇航
汪宇航
新手启示者
新手启示者

头文件:没问题

while/for...:无错误

f函数:i<j

0
鹿雨扬
鹿雨扬
资深守护
资深守护

每行最多输出80个字符。

望采纳

我要回答