题解 | #数据分类处理#

数据分类处理

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

#include<iostream>
#include<algorithm>
#include<vector>
#include<sstream>
using namespace std;
int main(){
    
    int n1;
    while(cin>>n1){
        // int I[n1];
        vector<int> I; 
        while(n1--){
            int x;cin>>x;
            I.push_back(x);
        }
               // for(int i=0;i<R.size();i++){
        //     cout<<R[i]<<" ";
        // }
        getchar();
        int n2;cin>>n2;vector<int> R;
        // int R[n2];
        while(n2--){
            // cin>>R[n2];
            int x;cin>>x;
            R.push_back(x);
        }
        
        //先对R去重排序
        // for(int i=n1-1;i>=0;i--){
        //     for(int j=i-1;j>=0;j--){
        //         if(R[i]<R[j]){
        //             swap(R[i],R[j]);
        //         }
        //         else if(R[i] = R[j]){
        //         }
        //     }
        // }
        sort(R.begin(),R.end());
        R.erase(unique(R.begin(),R.end()),R.end());
        // for(int i=0;i<R.size();i++){
        //     cout<<R[i]<<" ";
        // }
        //第一个表示R中下标,如果没有的话那么index[i].size()=0
        //第二个存放i的条件I,下标值
        vector<vector<int>> index(R.size());
    
        for(int i=0;i<R.size();i++){
            int find=0;
            //第一个元素放个数
            index[i].push_back(find);
            for(int j=0;j<I.size();j++){
                // != string::npos
                if(to_string(I[j]).find(to_string(R[i]))< to_string(I[j]).length()){
                    //存放下标
                    // cout<<"index j"<<j<<endl;
                    index[i].push_back(j);
                    find++;
                }
            }
            index[i][0] = find;
        }
        int R_find_num = 0,sum=0;
        for(int i=0;i<R.size();i++){
            if(index[i][0] != 0){
                R_find_num += 1;
                sum += 1+ 2*(index[i].size()-1) ;
            }


        }
        sum += R_find_num;
        cout<<sum<<" ";
        for(int i=0;i<R.size();i++){
            
            if(index[i][0] != 0){
                cout<<R[i]<<" "<<index[i].size()-1<<" ";
                for(int j=1;j<index[i].size();j++){
                    
                    int pos = index[i][j];
                    cout<<pos<<" "<<I[pos]<<" ";
                }
            }
        }

    }
}

全部评论

相关推荐

点赞 评论 收藏
分享
大冰箱文森特:实习经历可以考虑放上去,对于软件使用方面可以细化一些,比如调整为:熟悉基于LSDYNA的瞬态动力学仿真分析,熟悉基于WORKBENCH的结构拓扑优化
我的简历长这样
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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