无语

B4039 [GESP202409 三级] 回文拼接

wzc157 @ 2024-11-10 14:05:17

怎么做


by hexuchen @ 2024-11-10 14:14:12

@wzc157 如果你有眼睛,你可以很容易看到最左边有一个“查看题解”按钮。


by DYYqwq @ 2024-11-10 14:33:21

@hexuchen 有没有一种可能,这题没有题解。


by hexuchen @ 2024-11-10 14:46:22

@DYYqwq 靠 wssb


by fire_hua @ 2024-11-10 14:58:28

@wzc157

可以枚举一下两个回文字符串的断点,比如aabbb,可以把断点定义为第一个回文的最后一个字符,然后分别判断这两个是不是回文,因为题目要求长度至少为2,可以(比如下标从0开始)枚举[1,len-2]


by tengyuxuan @ 2024-11-15 18:05:42

@wzc157 你可以把所有可能都枚举出来, 然后每次判断一下两个字串是否回文(建议做自定义函数) 如果有,就输出yes,如果都枚举完了也没有 ,就输出no


by tengyuxuan @ 2024-11-15 18:06:41

@wzc157 我的代码:

#include <bits/stdc++.h>
using namespace std;
bool hw(string s){
    if(s.size()<2)return false;
    int k=s.size()-1;
    for(int i=0;i<s.size()/2;i++){
        if(s[i]!=s[k]){
            return false;
        }else{
            k--;
        }
    }
    return true;
}
int main(){
    int n;
    cin>>n;
    while(n--){
        string s;
        cin>>s;
        bool f=0;
        for(int i=0;i<s.size()-1;i++){
            string c=s.substr(0,i+1);
            string t=s.substr(i+1,s.size()-(i+1));
            if(hw(c)&&hw(t)){
                f=1;
                break;
            }
        }
        if(f){
            cout<<"Yes";
        }else{
            cout<<"No";
        }
        cout<<endl;
    }
    return 0;
}

by MLSY_OIer_ZXL @ 2024-11-23 20:23:45

@tengyuxuan

jbl,tlqtj


|