C++版本(简单)

数据分类处理

http://www.nowcoder.com/questionTerminal/9a763ed59c7243bd8ab706b2da52b7fd

#include<iostream>
#include<string>
#include<vector>
#include <sstream>
#include<vector>
#include<algorithm>
#include<set>
using namespace std;


int main(int argc, char* argv[]){
    int val1,val2;
    while(cin >> val1){
        vector<int> Iarr;
        vector<int> Rarr;


        for(int i=0;i<val1;i++){
            int t;
            cin >> t;
            Iarr.push_back(t);
        }
    //    for(int i=0;i<val;i++){
    //        cout << Iarr[i] << " ";
    //    }
    //    cout << endl;
        cin >> val2;
        for(int i=0;i<val2;i++){
            int t;
            cin >> t;
            Rarr.push_back(t);
        }
    //    for(int i=0;i<val;i++){
    //        cout << Rarr[i] << " ";
    //    }
    //    cout << endl;
        sort(Rarr.begin(), Rarr.end());
        set<int> st(Rarr.begin(), Rarr.end());
        Rarr.assign(st.begin(), st.end());
        int total = 0;
        string str;
        for(int i=0;i<Rarr.size();i++){
            int num=0;
            string tmp;
            for(int j=0;j<Iarr.size();j++){
                if(to_string(Iarr[j]).find(to_string(Rarr[i]))!=string::npos){
                    num++;
                    tmp+=to_string(j)+' '+to_string(Iarr[j])+' ';
                }
            }
            if(num!=0){
                total+=(num*2+2);
                str+=to_string(Rarr[i])+' '+to_string(num)+' '+tmp;
            }
        }
        cout << to_string(total)+' '+str.substr(0,str.size()-1)<<endl;
    }

    return 0;
}
全部评论
total+=(num*2+2); 乘2能够理解,在加2 是为啥呢,没有理解,望解析
点赞 回复 分享
发布于 2022-02-10 00:44
set本身就是排序的,不用再排序了吧,直接输入到set里就好了,再复制到vector数组里,还有最后输出不太理解为什么要复制一遍str呢
点赞 回复 分享
发布于 2022-01-25 23:40

相关推荐

不愿透露姓名的神秘牛友
昨天 18:35
简历上把1个月实习写成了3个月,会进行背调吗?
码农索隆:一个月有一个月的实习经历,三个月有三个月的实习经历
点赞 评论 收藏
分享
05-20 13:59
门头沟学院 Java
米黑子米黑子:你这个成绩不争取下保研?
点赞 评论 收藏
分享
06-13 10:15
门头沟学院 Java
想去夏威夷的大西瓜在...:我也是27届,但是我现在研一下了啥项目都没有呀咋办,哎,简历不知道咋写
点赞 评论 收藏
分享
评论
12
1
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务