编程语言
首页 > 编程语言> > “科大讯飞杯”第18届上海大学程序设计联赛春季赛暨高校网络友谊赛(C~D)

“科大讯飞杯”第18届上海大学程序设计联赛春季赛暨高校网络友谊赛(C~D)

作者:互联网

C 最长非公共子序列

题意:这一题可能咋一看比较难懂它在讲什么,大概讲的是,两个序列,求它们最长非公共子序列。那么什么是“非公共”呢?题目是这样解释的:

题解:仔细看一下这样只有两种情况:一种是两个序列相等,这样就不存在了;另一种是两个序列不相等,这样我们只需要输出两种之中最长的长度就可以了。

代码:

#include<iostream>
#include<cstring>
#include<algorithm>
#define ll long long
using namespace std;
int main(){
    string s1,s2;
    cin>>s1>>s2;
    if(s1==s2){
        cout<<-1<<endl;
    }else{
        cout<<max(s1.length(),s2.length())<<endl;
    }
    return 0;
}

D 最大字符集

题意:这一题的题意也比较简单,就是让你输出最大长度的为n的字符串且满足一下条件:

求满足以上条件的最大集合。

题解:这一题是一个构造,有点像cf中的a,b题的味道,你只要特判n=1和n=2两种情况,其余的按照第一个和末尾的一个是1,中间的是0输出即可。

代码:

#include<iostream>
#include<cstring>
using namespace std;
int main(){
    int n;
    cin>>n;
    if(n==1){
        cout<<1<<endl;
        cout<<1<<endl;
    }else if(n==2){
        cout<<2<<endl;
        cout<<0<<endl;
        cout<<11<<endl;
    }else{//最大长度至少为 3
        int len=2;
        cout<<n-1<<endl;
        for(int j=0;j<n-1;j++){
            for(int r=0;r<len;r++){
                if(r==0||r==len-1){
                    cout<<0;
                }else{
                    cout<<1;
                }
            }
            cout<<endl;
            len++;
        }
    }
    return 0;
}

 

标签:题意,s2,s1,18,字符串,飞杯,序列,友谊赛,include
来源: https://www.cnblogs.com/blogxsc/p/12764749.html