uvaoj 12291 - Polyomino Composer - dblank

uvaoj 12291 - Polyomino Composer

传送门:12291 - Polyomino Composer

题意:给你一个图案,再给你有一个图案,用第二团,在不旋转不翻转和不重叠的情况下,用第二个图案拼出第一个,只有'*'是有效图案。

思路:因为不能翻转不能旋转和不能重叠,直接从左到右找到一个‘’就用第二个去匹配就好了,看最后是否所有的‘’被覆盖了。

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<map>
#include<cstring>
#include<map>
#include<set>
#include<queue>
#include<stack>
#include<cmath>
using namespace std;
const double eps = 1e-10;
const int inf = 0x3f3f3f3f, N = 10 + 10, Mod = 1000000007;
typedef long long ll;
char sN, xN;
int visN;
int n, m, sum1, sum2, fx, fy, yes;
void dfs(int xx, int y)
{
    for(int i = 0; i<m; i++)
    {
        for(int j = 0; j<m; j++)
        {
            if(xi == '*')
            {
                int a = i - fx + xx, b = j - fy + y;
                if(a>=0&&a<n&&b>=0&&b<n && sa == '*')
                    sa='.';
                else yes = 1;
            }
        }
    }
}
int main()
{
    while(cin>>n>>m && n && m)
    {
        yes = 0;
        for(int i = 0; i<n; i++)
            scanf("%s", s[i]);
        int ok = 0;
         for(int i = 0; i<m; i++)
            scanf("%s", x[i]);
        for(int i = 0; i<m; i++)
        {
            if(ok) break;
            for(int j = 0; j<m; j++)
            {
                if(xi == '*')
                    fx = i, fy = j, ok = 1;
                if(ok) break;
            }
        }
        for(int i = 0; i<n; i++)
        {
            for(int j = 0; j <n; j++)
            {
                if(si == '*')
                {
                    dfs(i, j);
              //    print();
                }
            }
        }
        for(int i = 0; i<n; i++)
            for(int j = 0; j<n; j++)
                if(si == '*')
                    yes = 1;
        printf("%dn", yes^1);
    }
    return 0;
}

 

相关文章

发表新评论