Day 26

单词统计

作者: wanyan

时间限制: 1s

章节: 字符串

问题描述

从键盘上输入一个整数N,并输入N行字符串。每行字符串都包含多个单词,单词之间以空格分开。请输出每行字符串中单词的个数。

说明:以空格分隔开的任何字符串都认为是单词。比如"I'm"认为是一个单词

输入说明

首先输入一行,包含一个整数N,表示共测试N组数据。

后面接着输入N行,每行为一个字符串,字符串长度小于等于50。每个字符串中包含多个单词,单词之间以空格分隔。

输出说明

对每组测试数据,你的程序需要向标准输出文件(通常为启动该程序的终端)依次输出字符串中单词的个数。每个输出占一行,在行首和行尾不要输出多余的空格。在所有数据前后,以及两组数据之间不要输出多余的空行。

输入范例

3

i am a boy.

byebyetoyou

haha , meet you again!

输出范例

4

1

5

总结:本题通过一个inword标记当前是否在单词中,遍历到空格时说明不在单词,置为false,遍历到字符设为true并计数。

复制代码
#include<iostream>
#include<string>
using namespace std;

int main(){
    int N;
    string s;
    cin>>N;
    cin.ignore();
    
    for(int i=0;i<N;i++){
        getline(cin,s);
        
        int num=0;
        bool inWord=false;
        
        for(int j=0;j<s.length();j++){
            if(s[j]!=' '){
                if(!inWord){
                    num++;
                    inWord=true;
                }
            }
            else{
                inWord=false;
            }
        }
        
        cout<<num;
        if(i!=N-1) cout<<endl;
    }
    
    return 0;
}

转换成十进制

作者: Turbo

时间限制: 1s

章节: 字符串

问题描述

编写一个程序,将一个2~20以内任意进制数转换成十进制。这些数据由数字0-9,大写字母A-J组成,其中A=10,B=11......J=19。例如16进制数5A转换为十进制数90(90=5*16+10*1)。

输入说明

程序需要输入多组数据,每组数据一行,每行有两个数,用空格隔开,分别表示当前进制数和被转换的数据。输入数据十进制数大小不会超过10000,例如:16 5A 表示将16进制数5A转换成10进制数。

输出说明

对于每行输入数据需输出一个结果。每个结果为一个十进制的数。例如:16 5A需输出结果90。

输入范例

16 5A

2 1111111

输出范例

16 5A

2 1111111

总结:本题是进制转换的简单题,注意不要越界。

复制代码
#include<iostream>
#include<string>
using namespace std;
int fun(int n,string num){
    int k=1;
    int s=0;
    for(int i=num.length()-1;i>=0;i--){
        if(num[i]>='0'&&num[i]<='9'){
            s+=(num[i]-'0')*k;
        }
        else{
            s+=(num[i]-'A'+10)*k;
        }
        k=k*n;
    }
    return s;
}


int main(){
    int n;
    string num;
    bool first=true;
    while(cin>>n>>num){
        if(!first)cout<<endl;
        first=false;

        cout<<fun(n,num);
    }
    
    
    return 0;
}

十进制转换成其它进制

作者: Turbo

时间限制: 1s

章节: 字符串

问题描述

编写一个程序,将一个十进制数转换成任意的2~20以内的其他进制数。这些数据由数字0-9,字母A-J组成,其中A=10,B=11......J=19。例如90转换为16进制数为5A(90=5*16+10*1)。

输入说明

程序需要输入多组数据,每组数据一行,每行有两个数,用空格隔开,分别表示十进制数和转换成的进制数。输入数据不会超过10000,例如:90 16 表示将90转换成16进制数。

输出说明

对于每行输入数据需输出一个结果。每个结果包含为一个20以内的进制的数。输出的字母都为大写字母。例如:90 16需输出结果5A。

输入范例

127 2

90 16

输出范例

1111111

5A

总结:本题十进制转其他进制,先余后除即可,比较简单。

复制代码
#include<iostream>
#include<string>
#include<algorithm>
using namespace std;
string fun(int n,int jz){
    string s="";
    int t;
    while(n>0){
        t=n%jz;
        n=n/jz;
        if(t>=0&&t<=9){
            s+=char(t+'0');
        }
        else{
            s+=char(t-10+'A');
        }
    }
    reverse(s.begin(),s.end());
    return s;
}


int main(){
    int n,num;
    
    bool first=true;
    while(cin>>n>>num){
        if(!first)cout<<endl;
        first=false;

        cout<<fun(n,num);
    }
    
    
    return 0;
}

最大相同子串

作者: Turbo

时间限制: 1s

章节: 字符串

问题描述

输入两个字符串,获取两个字符串中最长相同子串并输出。

如果有多个相同子串,则输出(按ASCII排序)最小的那个"最长相同子串"。

如果无相同子串,则输出空字符串(即空行)。

输入说明

输入多组测试数据,每组测试数据包含两行。

每行包含一个字符串,字符串中无空格,也无空字符串。

输出说明

对于每组测试数据,输出最长子串。如果最长子串为空,则输出一个空行。

每组输出占一行,行首与行尾无多余空格,也无多余空行。

输入范例

abcded123456aabbcc

abcdaa1234

abcdabcdabcd

abcda

输出范例

1234

abcda

总结:本题考察遍历字符串,注意不要改变循环设置的变量。

复制代码
#include<iostream>
#include<string>
#include<algorithm>
using namespace std;

int main(){
    string s,t;
    while(getline(cin,s)){
        getline(cin,t);
        int maxLen = 0;
        string result = "";

        for(int i=0;i<s.length();i++){
            for(int j=0;j<t.length();j++){
                int k = i, l = j;
                int count = 0;
                
                while(k < s.length() && l < t.length() && s[k] == t[l]){
                    k++;
                    l++;
                    count++;
                }
                
                if(count > maxLen){
                    maxLen = count;
                    result = s.substr(i, count);
                }
                else if(count == maxLen && count > 0){
                    string temp = s.substr(i, count);
                    if(temp < result){
                        result = temp;
                    }
                }
            }
        }
        
        cout << result << endl;
    }
    
    return 0;
}

英语翻译:

Pretrained models have become a dominant paradigm in modern artificial intelligence. These models are first trained on large-scale datasets to learn general representations and then fine-tuned on specific downstream tasks. This approach significantly reduces the need for labeled data and improves model performance. In natural language processing, models like BERT and GPT are pre-trained using self-supervised learning objectives. Fine-tuning allows these models to adapt to tasks such as text classification, sentiment analysis, and question answering. Transfer learning plays a crucial role in this process by leveraging knowledge from one domain to another. Despite their effectiveness, pretrained models require substantial computational resources, raising concerns about efficiency and environmental impact.

预训练模型已经成为了现代人工智能中的主要模式。这些模型在大规模的数据集上首次训练来学习通用的表现形式,然后再特定的下游任务中微调。这个方法极大地减少了对标签数据的需求,提升了模型的性能。在自然语言处理中,像BERT和GPT这样的模型通过自我监督学习目标进行预训练。微调允许这些模型适配文字分类,情感分析和问答这类任务。迁移学习在这一过程发挥巨大作用,通过将一个领域的知识应用到另一领域。尽管他们的效率很高,预训练模型需要大量的计算资源。这引发了对效率和环境影响的担忧。

相关推荐
信奥卷王2 小时前
2026年03月GESPC++二级真题解析(含视频)
算法
从零开始学习人工智能2 小时前
国产阿特拉斯无人机蜂群核心算法(一)
算法·无人机
励志的小陈2 小时前
双指针算法--移除元素、删除有序数组中的重复项、合并两个有序数组
算法
Summer_Uncle2 小时前
【QT学习】Qt界面布局的生命周期和加载时机
c++·qt
小CC吃豆子3 小时前
C++ 继承
开发语言·c++
hoiii1873 小时前
Mean Shift目标跟踪算法MATLAB实现
算法·matlab·目标跟踪
励志的小陈3 小时前
复杂度算法题——旋转数组(三种思路)
c语言·数据结构·算法
tankeven3 小时前
HJ151 模意义下最大子序列和(Easy Version)
c++·算法
Sirens.3 小时前
对顺序表以及双向链表的理解
数据结构·链表