zoukankan      html  css  js  c++  java
  • 恋愛SLG-「めがね」ゲットチャレンジ!

    「めがね」ゲットチャレンジ!

     paizaランクB相当問題
    Poh7 question box top

    あなたはクライアントから画像分析の仕事を受けました。

    N × N ピクセルの白黒画像と M × M ピクセルの白黒画像が与えられます。 白黒画像の各画素は 0 または 1 のいずれかです。 N × N ピクセルの画像を入力、M × M ピクセルの画像をパターンと呼ぶことにします。

    あなたの仕事は、入力からパターンとの完全一致を探すことです。

    入力とパターンがピクセルの位置 (y, x) で完全一致するとは、 全ての i, j (i = 0, 1, ... M - 1, j = 0, 1, ... M - 1) について、 (入力の位置 (y + j, x + i) におけるピクセル) = (パターンの位置 (j, i) におけるピクセル) が成立することをいいます。

    また、依頼主からは、入力にはパターンと完全一致する箇所は必ず 1 つだけ存在するということを 伝えられています。

    ここで、N = 4 の入力の例を見てみましょう。

    図中の赤い線で囲まれている部分とパターンが完全一致していることがわかります。 完全一致のピクセルの位置、すなわち、(1, 0) を出力してください。

    入力される値

    入力は標準入力にて以下のフォーマットで与えられます。

    N
    q_{0, 0} q_{0, 1} q_{0, 2} ... q_{0, N-1}
    q_{1, 0} q_{1, 1} q_{1, 2} ... q_{1, N-1}
    ...
    q_{N-1, 0} q_{N-1, 1} q_{N-1, 2} ... q_{N-1, N-1}
    M
    p_{0, 0} p_{0, 1} p_{0, 2} ... p_{0, M-1}
    p_{1, 0} p_{1, 1} p_{1, 2} ... p_{1, M-1}
    ...
    p_{M-1, 0} p_{M-1, 1} p_{M-1, 2} ... p_{M-1, M-1}

    条件

    すべてのテストケースにおいて、以下の条件をみたします。

    10 ≦ N ≦ 100, 2 ≦ M ≦ 10
    q_{i, j}, p_{i, j} は 0 または 1
    パターンと完全一致する箇所は必ず1つだけ存在します

    期待する出力

    パターンと完全一致する左上のピクセルの座標を半角スペース区切りで出力してください。

    入力例1

    入力

    4
    0 0 1 0
    0 1 1 0
    0 1 0 1
    1 1 1 0
    3
    0 1 1
    0 1 0
    1 1 1

    出力

    1 0

    入力例2

    入力

    4
    0 0 0 0
    0 0 1 1
    0 0 1 1
    0 0 0 0
    2
    1 1
    1 1

    出力

    1 2

    oj网址:https://paiza.jp/poh/ando/mypage/c5894afb 
     
    通过这题获得
    给两个图 
    问第二个图匹配第一个图时候在第一个图左上角的坐标
    暴力
    #include <iostream>
    #include <cstring>
    #include <cstdio>
    #include <algorithm>
    #include <queue>
    #include <vector>
    #include <iomanip>
    #include <math.h>
    #include <map>
    using namespace std;
    #define FIN     freopen("input.txt","r",stdin);
    #define FOUT    freopen("output.txt","w",stdout);
    #define INFLL   0x3f3f3f3f3f3f3f
    #define lson    l,m,rt<<1
    #define rson    m+1,r,rt<<1|1
    typedef long long LL;
    typedef pair<double, double> PII;
    
    int mp[105][105];
    int mp2[105][105];
    
    int main() {
        //FIN
        int n, m;
        while(~scanf("%d", &n)) {
            for(int i = 0; i < n; i++)
                for(int j = 0; j < n; j++)
                    scanf("%d", &mp[i][j]);
    
            scanf("%d", &m);
            for(int i = 0; i < m; i++)
                for(int j = 0; j < m; j++)
                    scanf("%d", &mp2[i][j]);
    
            int sign = 0;
            int ans1, ans2;
    
            for(int i = 0; i < n; i++) {
                for(int j = 0; j < n; j++) {
                    int flag = 0;
                    for(int k = 0; k < m; k++) {
                        for(int z = 0; z < m; z++) {
                            if(mp2[k][z] != mp[i+k][j+z]) flag = 1;
                        }
                        if(flag) break;
                    }
                    if(!flag) {
                        printf("%d %d
    ", i, j);
                        sign = 1;
                        break;
                    }
                }
                if(sign) break;
            }
    
        }
        return 0;
    }
    

      

     
  • 相关阅读:
    (一〇八)iPad开发之横竖屏适配
    ZOJ 1414:Number Steps
    HDU 1391:Number Steps
    ZOJ 1871:Steps
    POJ 2590:Steps
    POJ 2629:Common permutation
    POJ 2562:Primary Arithmetic
    POJ 2505:A multiplication game
    HDU 1517:A Multiplication Game
    POJ 3650:The Seven Percent Solution
  • 原文地址:https://www.cnblogs.com/Hyouka/p/7452127.html
Copyright © 2011-2022 走看看