60pts,#5~#8,玄关求条
查看原帖
60pts,#5~#8,玄关求条
812368
x12xx楼主2024/11/24 19:54

测试点5out数据跟我代码跑出来一样

#include<bits/stdc++.h>
using namespace std;
int main(){
    int p1,p2,p3;
    string s;
    cin>>p1>>p2>>p3>>s;
    for(int i=0;i<s.length();i++){
        if(s[i]=='-'){
            //判断情况是否为5.1
            if(int(s[i-1])+1==int(s[i+1]))continue;
            //判断情况是否为5.2
            else if(int(s[i-1])>=int(s[i+1])||((s[i-1]>='0'&&s[i-1]<='9'&&s[i+1]>='a'&&s[i+1]<='z')||(s[i-1]>='a'&&s[i-1]<='z'&&s[i+1]>='0'&&s[i+1]<='9'))){
                cout<<'-';
                continue;
            }
            //若否:
            else{
                //判断是否为顺序
                if(p3==1){
                    for(int j=int(s[i-1])+1;j<int(s[i+1]);j++){
                        //循环p2次
                        for(int k=1;k<=p2;k++){
                            if(p1==1)cout<<char(j);
                            else if(p1==2)cout<<char(j-32);
                            else cout<<'*';
                        }
                    }
                }
                //若否
                else{
                    for(int j=(int(s[i+1])-1);j>(int(s[i-1]));j--){
                        for(int k=1;k<=p2;k++){
                            if(p1==1)cout<<char(j);
                            else if(p1==2)cout<<char(j-32);
                            else cout<<'*';
                        }}}}}
        else cout<<s[i];
    }
    return 0;
}
2024/11/24 19:54
加载中...