📄 3416065_ac_32ms_292k.cc
字号:
#include <stdio.h>
#include <string.h>
int r, c;
int R, C;
char sub[21][21], img[21][21];
int mark[21];
bool success;
bool same(int i, int j)
{
int k, p;
k = 0;
for(p = 0; p < c; p++)
{
while (k < C && mark[k] == 0)
{
k++;
}
if (sub[j][p] != img[i][k])
{
return false;
}
k++;
}
return true;
}
void check()
{
int i, j;
i = 0;
for (j = 0; j < r; j++)
{
while (i < R && !same(i, j))
{
i++;
}
if (i == R)
{
return ;
}
i++;
}
success = true;
}
void enumerate(int from, int need)
{
int i;
if (need == 0)
{
check();
return ;
}
for (i = from; !success && i <= C - need; i++)
{
mark[i] = 1;
enumerate(i + 1, need - 1);
mark[i] = 0;
}
}
int main()
{
int i;
scanf("%d%d", &r, &c);
for (i = 0; i < r; i++)
{
scanf("%s", sub[i]);
}
scanf("%d%d", &R, &C);
for (i = 0; i < R; i++)
{
scanf("%s", img[i]);
}
memset(mark, 0, sizeof(mark));
success = false;
enumerate(0, c);
puts(success ? "Yes" : "No");
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -