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 ;}
  • 相关阅读:
    c语言函数定义、函数声明、函数调用以及extern跨文件的变量引用
    c语言局部变量 静态局部变量 全局变量与静态全局变量
    Source Insight建工程之Kernel
    day49
    管道实例取出最常用的10个指令
    day52
    Linux中vi的使用
    vi高级技巧
    vim配置
    typedef
  • 原文地址:https://www.cnblogs.com/xiaolongchase/p/2446723.html
Copyright © 2011-2022 走看看