9.8晚上网易互娱笔试(c++)


第一题:

#include <iostream>
#include <string>
#include <queue>
using namespace std;

int main()
{
  int n;
  cin >> n;
  while (n--) {
    string str;
    cin >> str;
    queue<char> sss;
    int len = str.length();
    for (int i = 0; i < len;) {
      sss.push(str[i++]);
      while (str[i] == (str[i - 1] + 1)) {
        sss.push(str[i++]);
      }
      if (sss.size() < 4) {
        while (!sss.empty()) {
          cout << sss.front();
          sss.pop();
        }
      } else {
        cout << sss.front()<<'-';
        while (sss.size() > 1)
        sss.pop();
        cout << sss.front();
        sss.pop();
      }
    }
    cout << endl;
  }
  system("pause");
  return 0;
}

第二题:

#include <iostream>
#include <string>
using namespace std;
int char_to_num(char x) {
  if ((x >= '0') && (x <= '9'))
    return x - '0';
  else return x - 'A' + 10;
}
int main()
{
  int n;
  cin >> n;
  while (n--) {
    int x, y;
    cin >> x >> y;
    string str;
    cin >> str;
    int len = str.length();
    int first, second;
    for (int i = 1; i < len; i++) {
      first = 0;
      second = 0;
      for (int j = 0; j < i; j++) {
        first *= x;
        first += char_to_num(str[j]);
      }
      for (int j = i; j < len; j++) {
        second *= y;
        second += char_to_num(str[j]);
      }
      if (first == second)
        cout << first << endl;
    }
  }
  system("pause");
  return 0;
}

第三题:
#include <iostream> 
#include <vector> 
#include <string> 
#include <set> 
using namespace std; 
int max(int a,int b){ 
  return a>b?a:b; 
}; 
int min(int a,int b){ 
  return a<b?a:b; 
}; 
int main(){ 
  int T; 
  while(cin>>T){
    vector<int>result_v; 
    while(T) { 
      int N,M,L,S,temp,result=0; 
      cin>>N>>M>>L>>S; 
      string temps; 
      vector<pair<int,int>> timu = vector<pair<int,int>>(N); 
      vector<vector<string>> shuxin = vector<vector<string>>(N); 
      for(int i =0;i<N;i++){ 
        cin>>temp; 
        timu[i].first=temp; 
        cin>>temp; 
        timu[i].second=temp; 
        for(int j=0;j<temp;j++){ 
          cin>>temps; 
          shuxin[i].push_back(temps); 
        } 
      } 
      set<string>settemp; 
      int sum=0,Min,Max; 
      result=0; 
      for(int i = 0; i <N*N; ++i){ 
        bool flag=true; settemp.clear(); 
        sum=0,Min=L,Max=0; 
        int tempi=i; int count=0; 
        for (int j =0;j<N;j++){ 
          int index; index=tempi%2; 
          tempi/=2; 
          if(index) count++; 
        } 
        if(count!=M) 
          continue; 
        tempi=i; 
        for (int j =0;j<N;j++) { 
          int qianyigesize=settemp.size(); 
          int houyigesize; 
          int index; 
          index=tempi%2; 
          tempi/=2; 
          if (index){ 
            Max=max(Max,timu[j].first); 
            Min=min(Min,timu[j].first); 
            for (int k = 0; k < shuxin[j].size(); k++) { 
              settemp.insert(shuxin[j][k]); 
            } 
            houyigesize=settemp.size(); 
            if(qianyigesize+shuxin[j].size()!=houyigesize){ 
              flag= false; break; 
            } 
            sum+=timu[j].first; 
            if (sum>L) { 
              flag= false; 
              break; 
            } 
          } 
        } 
        if(flag){ 
          if(Max-Min>=S) { 
            result++;
          } 
        } 
      } 
      result_v.push_back(result); 
      T--; 
    } 
    for(int i:result_v) { 
      cout<<i<<endl; 
    } 
  } 
  return 0; 
}
(第三题credit to 评论二楼 @null~~· 感谢~~)

第四题:

#include <iostream>
using namespace std;

struct node {
  int x;
  int y;
}num[1000];

int main()
{
  int T;
  cin >> T;
  while (T--) {
    int n;
    cin >> n;
    int cnt = 0;
    for (int i = 0; i < n; i++) {
      cin >> num[i].x >> num[i].y;
    }
    for (int i = 0; i < n; i++) {
      for (int j = i+1; j < n; j++) {
        if (num[i].y == num[j].x) {
          num[j].x = num[i].x;
          cnt++;
          break;
        }
        if (num[i].x == num[j].y) {
          num[j].y = num[i].y;
          cnt++;
          break;
        }
      }   
    }
    if (cnt < n - 1)cout << "no" << endl;
    else cout << "yes" << endl;
  }
  system("pause");
  return 0;
}

#网易互娱##笔试题目##题解#
全部评论
第四题ac了吗,这个例子1 2,2 5,8 5,5 7,5 8应该输出yes,但是你的代码结果是no呀???
点赞 回复 分享
发布于 2018-09-09 10:14
#include<iostream> #include <vector> #include <string> #include <set> using namespace std; int max(int a,int b){ return a>b?a:b; }; int min(int a,int b){ return a<b?a:b; }; int main(){ int T; while(cin>>T){vector<int>result_v; while(T) { int N,M,L,S,temp,result=0; cin>>N>>M>>L>>S; string temps; vector<pair<int,int>> timu=vector<pair<int,int>>(N); vector<vector<string>> shuxin=vector<vector<string>>(N); for(int i =0;i<N;i++){ cin>>temp; timu[i].first=temp; cin>>temp; timu[i].second=temp; for(int j=0;j<temp;j++){ cin>>temps; shuxin[i].push_back(temps); } } set<string>settemp; int sum=0,Min,Max; result=0; for(int i = 0; i <N*N; ++i){ bool flag=true; settemp.clear(); sum=0,Min=L,Max=0; int tempi=i; int count=0; for (int j =0;j<N;j++){ int index; index=tempi%2; tempi/=2; if(index) count++; } if(count!=M) continue; tempi=i; for (int j =0;j<N;j++) { int qianyigesize=settemp.size(); int houyigesize; int index; index=tempi%2; tempi/=2; if (index){ Max=max(Max,timu[j].first); Min=min(Min,timu[j].first); for (int k = 0; k < shuxin[j].size(); k++) { settemp.insert(shuxin[j][k]); } houyigesize=settemp.size(); if(qianyigesize+shuxin[j].size()!=houyigesize){ flag= false; break; } sum+=timu[j].first; if (sum>L) { flag= false; break; } } } if(flag){ if(Max-Min>=S) { result++;} } } result_v.push_back(result); T--; } for(int i:result_v) { cout<<i<<endl; } } return 0; }
点赞 回复 分享
发布于 2018-09-08 23:25
第四题解的牛逼
1 回复 分享
发布于 2018-09-08 22:55
第三题有人解释一下吗
点赞 回复 分享
发布于 2018-09-10 16:59
都是百分之多少啊,第二题不用二分超时的吧
点赞 回复 分享
发布于 2018-09-09 10:45
第三题
点赞 回复 分享
发布于 2018-09-08 23:26

相关推荐

07-01 23:23
郑州大学 Java
否极泰来来来来:牛客迟早有高三的
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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