#include <stdio.h>
#include <vector>
#include <map>
#include <string>
using namespace std;
bool Isvalid(string str1, string str2)
{
map<char, int> m;
for (int i = 0; i < str2.size(); i++)
{
m[str2[i]]++;
}
for (int i = 0; i < str1.size(); i++)
{
m[str1[i]]--;
if (m[str1[i]] < 0)
{
return false;
}
}
return true;
}
bool Print(vector<string> A, vector<string> B)
{
for (int i = 0; i < A.size(); i++)
{
string str = A[i];
bool flag = false;
for (int j = 0; j < B.size(); j++)
{
if (Isvalid(str, B[j]))
{
flag = true;
break;
}
}
if (!flag)
{
return false;
}
}
}

int main(void)
{
vector<string> A = { "abcd", "d", "ebd", "bcda" };
vector<string> B = { "abcdfg", "bcde" };
bool res = Print(A, B);
return 0;
}
花了几分钟 写了一下 看看吧 感觉应该没问题