首页 > 解决方案 > 如何找到只包含某个字段而没有其他字段的列表?

问题描述

如何找到只包含某个字段而没有其他字段的列表?如:</p>

[a, b, c, d]
[a, b, c]
[a, b]

查找仅包含 a 和 b 的列表:[a, b]

标签: c++

解决方案


在这里,我已经实现了您所需要的。input是 2d 向量,其中包含您提到的三个列表的输入。该check向量包含您要检查输入中是否存在的列表。

#include<iostream>
#include<vector>
#include<algorithm>

using namespace std;

int main() {
    vector<vector<char>> input = {
        {'a', 'b', 'c', 'd'},
        {'a', 'b', 'c'},
        {'a', 'b'}
    };
    bool broke = false;
    vector<char> check = {'a', 'b'};
    sort(check.begin(), check.end());
    for(int j=0; j<input.size(); ++j){
        auto x = input[j];
        if(x.size()!=check.size())continue;
        sort(x.begin(), x.end());
        for(int i=0; i<min(x.size(),check.size()); ++i){
            if(check[i]!=x[i]){
                broke = true;
                break;
            }
        }
        if(!broke){
            cout<<j+1<<" number list is equal to required list\n";
        }
        broke = false;
    }
    return 0;
}

此代码接受动态输入,因此您可以使用输入和检查值来理解代码。我已经实施了 Cwift 在之前的回答中建议的方法。


推荐阅读