约翰想要计算他那N(l < =N <= 1000)只奶牛的名字的能量.每只奶牛的名字由不超过1000个字 符构成,没有一个名字是空字体串.
约翰有一张“能量字符串表”,上面有M(1 < =M < =100)个代表能量的字符串.每个字符串 由不超过30个字体构成,同样不存在空字符串.一个奶牛的名字蕴含多少个能量字符串,这个名 字就有多少能量.所谓“蕴含”,是指某个能量字符串的所有字符都在名字串中按顺序出现(不 一定一个紧接着一个).
所有的大写字母和小写字母都是等价的.比如,在贝茜的名字“Bessie”里,蕴含有“Be” “si” “EE”以及“Es”等等字符串,但不蕴含“Ls”或“eB” .请帮约翰计算他的奶牛的名字 的能量.
* Line 1: Two space-separated integers: N and M
* Lines 2..N+1: Line i+1 contains a string that is the name of the ith cow
* Lines N+2..N+M+1: Line N+i+1 contains the ith good string
* Lines 1..N+1: Line i+1 contains the number of quality points of the ith name
5 3 Bessie Jonathan Montgomery Alicia Angola se nGo Ont
1 1 2 0 1
- #include
- #include
- #define ll long long
- using namespace std;
-
- string s[1005];
- string gs[105];
- int ans[1005] = {0};
-
- string lower(string s)
- {
- string str = "";
- for(int i = 0; i < s.length(); i++)
- {
- if(s[i] >= 'A' && s[i] <= 'Z')
- str += s[i] + 32;
- else
- str += s[i];
- }
-
- return str;
- }
-
- int main()
- {
- int n, m, v = 0;
- cin>>n>>m;
-
- for(int i = 1; i <= n; i++)
- {
- cin>>s[i];
- s[i] = lower(s[i]);
- }
-
- for(int i = 1; i <= m; i++)
- {
- cin>>gs[i];
- gs[i] = lower(gs[i]);
- }
-
- for(int i = 1; i <= n; i++)
- {
- bool flag = false;
-
- for(int t = 1; t <= m; t++)
- {
- int sh = -1;
- for(int j = 0; j < gs[t].length(); j++)
- {
- int kk = s[i].find(gs[t][j], sh+1);
- if(kk <= sh)
- {
- flag = true;
- break;
- }
- sh = kk;
- }
-
- if(!flag)
- {
- ans[i]++;
- }
- flag = false;
- }
- }
-
- for(int i = 1; i <= n; i++)
- {
- cout<
- }
-
- return 0;
- }