2024.09.10深信服

1. 三色石头

桌子上放了一排石头,有n个,每块石头的颜色可以是红色,绿色或蓝色。
现在要从这排石头取出的数个石头,以便剩余的石头里面,任何两颗相邻的石头具有不同的
颜色的(取出1块石头后,就认为两边的石头是相邻的)。
请根据输入的石头数量、排序和颜色,计算最少要取出几块石头?

贪心打卡题
int main() {
    int n;
    cin>>n;
    string s;
    cin>>s;
    int res = 0;
    for(int i=1;i<n;i++)//保留第一块
        if(s[i]==s[i-1]) res++;
    cout<<res<<endl;
    return 0;
}

2. 验证DNS域名

验证一个字符串是否是合法的DNS域名。DNS域名的格式要求如下:
1)域名由一系列以点分隔的标签组成。每个标签最长可为63个字节。域名的总长度不能超
过 255 字节,包括点。域名至少由2个标签组成。
2)域名标签只能包含字符 a-z、A-Z、0-9 和-(连字符)。不能在标签开头或结尾指定连字
符。域名支持大小写,但是不区分大小写。

简单模拟题
bool judge(string &s){
    unordered_set<char> st;
    for(char c='a';c<='z';c++)
        st.insert(c);
    for(char c='A';c<='Z';c++)
        st.insert(c); 
    for(char c='0';c<='9';c++)
        st.insert(c);   
    st.insert('-');
    st.insert('.');

    int n = s.size();
    if(s.size()>255){
        cout<<"整体超出长度"<<endl;
        return false;
    }
    if(s[0]=='-'||s[n-1]=='-') return false;
    for(auto c:s){
        if(st.count(c)==0){
            cout<<"含有非法字符"<<c<<endl;
            return false;
        }
    }
    stringstream ss(s);
    string cur;
    while(getline(ss,cur,':')){
        cout<<cur<<endl;
        if(cur.size()>63) return false;
    }
    return true;
}

int main() {
    string s;
    cin>>s;
    if(judge(s)) cout<<"true";
    else cout<<"false";
    return 0;
}

3. 木材拼接

现在有一批长度不同的木材woods,现在需要将木材进行拼接,正好达到总长度length,在不考虑切割木材,
并且每种长度的木材不限量供应情况下,返回满足要求的最少木材数量,如果无法通过组合达到规定长度,则返回-1。

简单背包问题

int main() {
    int n;
    cin>>n;
    vector<int> woods(n);
    for(int i=0;i<n;i++)
        cin>>woods[i];
    int len;
    cin>>len;
    vector<int> dp(len+1,INT_MAX/2);//dp[i]表示达到长度i需要的最少木材
    dp[0] = 0;
    for(auto wood:woods)//枚举木材,每个可以使用无限次
        for(int i=wood;i<=len;i++){
            dp[i] = min(dp[i],dp[i-wood]+1);
        }
    if(dp[len]==INT_MAX/2) cout<<-1<<endl;
    else cout<<dp[len]<<endl;
    return 0;
}
posted @   失控D大白兔  阅读(26)  评论(0编辑  收藏  举报
(评论功能已被禁用)
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
历史上的今天:
2023-09-11 字符串转换
2022-09-11 LeetCode/雇佣K名工人的最低成本
点击右上角即可分享
微信分享提示