• 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 ;}
  • 相关阅读:
    对于delphi 三层的理解
    XE6调用android标准功能
    修复 XE7 Frame 内 PopupMenu 快捷键失效问题 by 龟山阿卍
    最大熵模型 二
    最大熵模型
    算法复习-平面内极大值点
    算法复习-生成全排列
    算法复习-归并排序
    算法复习-快速排序
    连续特征的离散化
  • 原文地址:https://www.cnblogs.com/xiaolongchase/p/2446723.html
Copyright © 2020-2023  润新知