zoukankan      html  css  js  c++  java
  • poj 3600 Subimage Recognition (枚举+dfs)

    http://poj.org/problem?id=3600

    枚举subimage第一行在image中的位置,然后在image中选取c列,若这c列中有r行和subimage相同,那么即为有解。

    code:

    #include<cstdio>
    #include<cstring>
    #include<iostream>
    using namespace std ;
    int vis[21] ;
    char smap[21][21], imap[21][21] ;
    int r, c, R, C, flag ;
    int check(int cr){      //判断imap中是否有r行与smap相同
        int i, j, count = 0, x = 0, y = 0 ;
        for(i=cr; i<R; i++){
            y = 0 ;
            for(j=0; j<c; j++)
                if(smap[x][y]==imap[i][vis[j]])
                    y ++ ;
            if(y==c)    x ++ ;
        }
        if(x==r)    return 1 ;
        return 0 ;
    }
    void dfs(int cr, int num, int cc){
        if(flag||cc>C)    return ;
        if(num==c){         //选取的列数为c时判断
            flag = check(cr) ;
            return ;
        }
      /*for(int i=cc; i<C; i++){
            vis[num] = i ;
            dfs(cr, num+1, i+1) ;
        }
    */
        vis[num] = cc ;
        dfs(cr, num+1, cc+1) ;
        if(flag)    return ;
        dfs(cr, num, cc+1) ;
    }
    int main(){
        int i, j ;
        while(~scanf("%d%d", &r, &c)){
            for(i=0; i<r; i++)
                cin >> smap[i] ;
            scanf("%d%d", &R, &C) ;
            for(i=0; i<R; i++)
                cin >> imap[i] ;
            for(i=0; i<R-r+1; i++){     //枚举子图第一行所在位置
                dfs(i, 00) ;
                if(flag)    break ;
            }
            if(flag)    printf("Yes\n") ;
            else        printf("No\n") ;
        }
        return 0 ;}
  • 相关阅读:
    oracle日志总结
    UIScrollView,contentOffset,contentInsert的各自特点和区别?
    js动态增加表格
    判断某个对象是不是DOM对象
    IOS 中frame与bounds的区别
    删除重复项,只取其中一条数据
    NSBundle
    React
    HTML5 postMessage 和 onmessage API 详解
    SonarQube
  • 原文地址:https://www.cnblogs.com/xiaolongchase/p/2446723.html
Copyright © 2011-2022 走看看