360 4.2笔试

笔试第二题是判断语法题,就是主谓宾那题。求看看哪错了。

第一次是9%。
#include<bits/stdc++.h>
#include<sstream>
using namespace std;

map<string, int> mp;
signed main() {
    int n1, n2, n3;
    string str;
    cin >> n1 >> n2 >> n3; getchar();
    for (int i = 0; i < n1; ++ i) {
        cin >> str;
        mp[str] = 1;
    }
    for (int i = 0; i < n2; ++ i) {
        cin >> str;
        mp[str] = 2;
    }
    for (int i = 0; i < n3; ++ i) {
        cin >> str;
        mp[str] = 3;
    }
    int m; cin >> m;	getchar();
    for (int i = 0; i < m; ++ i) {
        getline(cin, str);
        stringstream ss(str);
        int flag = 0;
        while (ss >> str) {
           	if (mp[str] == 1) {
                if (flag == 0 || flag == 1)	flag = 1;
                else flag = -1;
            }
            if (mp[str] == 2) {
                if (flag == 1)	flag = 2;
                else flag = -1;
            }
            if (mp[str] == 3) {
                if (flag == 2 || flag == 3)	flag = 3;
                else flag = -1;
            }
        }
        if (flag ==  3 || flag == 2)	cout << "YES\n";
        else cout << "NO\n";
    }
    return 0;
}

第二次也是9%
#include<bits/stdc++.h>
#include<sstream>
using namespace std;

map<string, int> mp;
vector<string> v[3];
signed main() {
    int n1, n2, n3;
    string str;
    cin >> n1 >> n2 >> n3; getchar();
    for (int i = 0; i < n1; ++ i) {
        cin >> str;
        mp[str] = 1;
    }
    for (int i = 0; i < n2; ++ i) {
        cin >> str;
        mp[str] = 2;
    }
    for (int i = 0; i < n3; ++ i) {
        cin >> str;
        mp[str] = 3;
    }
    int m; cin >> m;	getchar();
    for (int i = 0; i < m; ++ i) {
        getline(cin, str);
        string tmp = "";
        int flag = 0;
        for (int i = 0; i < str.size(); ++ i) {
            if (str[i] == ' ') {
                if (flag == 0 && mp[tmp] == 1)	flag = 1;
                else if(flag == 1 && mp[tmp] == 1) flag = 1;
                else if (flag == 1 && mp[tmp] == 2)	flag = 2;
                else if (flag == 2 && mp[tmp] == 3)	flag = 3;
                else if (flag == 3 && mp[tmp] == 3)	flag = 3;
                else {
                    tmp = "";
                    flag = -1;
                    break;
                }
                tmp = "";
            }
            else tmp += str[i];
        }
        if (tmp != "") {
            if (flag == 1 && mp[tmp] == 2)	flag = 2;
            else if (flag == 2 && mp[tmp] == 3)	flag = 3;
            else if(flag == 3 && mp[tmp] == 3)	flag = 3;
        }
        if (flag ==  3 || flag == 2)	cout << "YES\n";
        else cout << "NO\n";
    }
    return 0;
}

Java 100%


import java.util.Scanner;
import java.util.TreeMap;


public class Main {

    public static void main(String[] args) {
        int n1, n2, n3;
        Scanner in = new Scanner(System.in);
        TreeMap<String, Integer> mp = new TreeMap<String, Integer>();
        n1 = in.nextInt();
        n2 = in.nextInt();
        n3 = in.nextInt();
        for (int i = 0; i < n1; ++ i) {
            String s = in.next();
            mp.put(s, 1);
        }
        for (int i = 0; i < n2; ++ i) {
            String s = in.next();
            mp.put(s, 2);
        }
        for (int i = 0; i < n3; ++ i) {
            String s = in.next();
            mp.put(s, 3);
        }
        int m = in.nextInt();
               String tmp = in.nextLine();
        for (int i = 0; i < m; ++ i) {
            String l = in.nextLine();
            Scanner ss = new Scanner(l);
            String nxt;
            int flag = 0;
            while (ss.hasNext()) {
                nxt = ss.next();
                if (mp.get(nxt) == 1) {
                    if (flag == 0 || flag == 1)  flag = 1;
                    else {
                        flag = -1;
                        break;
                    }
                }
                if (mp.get(nxt) == 2) {
                    if (flag == 1)  flag = 2;
                    else {
                        flag = -1;
                        break;
                    }
                }
                if (mp.get(nxt) == 3) {
                    if (flag == 2 || flag == 3) flag = 3;
                    else {
                        flag = -1;
                        break;
                    }
                }
            }
            if (flag == 2 || flag == 3) System.out.println("YES");
            else System.out.println("NO");
        }
    }
}



#笔试题目##360公司#
全部评论
c++ 和 Java 的逻辑是一样的,写法也是一样的。我就感觉可能是我读入的问题。
点赞
送花
回复 分享
发布于 2022-04-02 18:30

相关推荐

2 3 评论
分享
牛客网
牛客企业服务