poj1476

Posted flyawayl

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了poj1476相关的知识,希望对你有一定的参考价值。

保存不完整数字可能对应的数字,注意小时<24,分钟小于59.

AC代码

#include <stdio.h>
#include <vector>
using namespace std;
const int maxn = 100 + 5;
char s[3][maxn];
int ret[maxn], tol;
vector<int> a[8];
int h, m;
char dig[][9] = {
     ,_, ,|, ,|,|,_,|,
     , , , , ,|, , ,|,
     ,_, , ,_,|,|,_, ,
     ,_, , ,_,|, ,_,|,
     , , ,|,_,|, , ,|,
     ,_, ,|,_, , ,_,|,
     ,_, ,|,_, ,|,_,|,
     ,_, , , ,|, , ,|,
     ,_, ,|,_,|,|,_,|,
     ,_, ,|,_,|, ,_,|};
    
void dfs(int num) {
    if(num >= 8) {
        int x = (ret[0]*10 + ret[1])*60 + (ret[2]*10+ret[3]);
        int y = (ret[4]*10 + ret[5])*60 + (ret[6]*10+ret[7]);
        if(x > 23*60+59 || y > 23*60+59) {
            return;
        }
        if((y+15) % (24*60) == x) {    
            //printf("%d : %d   %d : %d\n", ret[0]*10+ret[1],ret[2]*10+ret[3],ret[4]*10 + ret[5],ret[6]*10+ret[7]);
            h = ret[0]*10 + ret[1];
            m = ret[2]*10+ret[3];
            tol++;
        }
        return;
    }
    if(tol > 1) return;;
    for(int i = 0; i < a[num].size(); i++) {
        ret[num] = a[num][i];
        dfs(num+1);
    }
}

int main() {
    int T;
    scanf("%d", &T);
    getchar();
    while(T--) {
        tol = 0;
        for(int i = 0; i < 8; i++) a[i].clear();
        for(int i = 0; i < 3; i++) {
            fgets(s[i], sizeof(s[i]), stdin); 
        }
        int num = 0;
        for(int i = 0; i < 3*8+1; i+=3) {
            if(i==12) {
                i = 10;
                continue;
            }
            vector<char> b;
            for(int j = 0; j < 3; j++) {
                for(int k = i; k < i+3; k++) {
                    b.push_back(s[j][k]);
                }
            }
            // compare
            for(int j = 0; j < 10; j++) {
                int f = 1;
                for(int k = 0; k < 9; k++) {
                    if(dig[j][k] != b[k] && (b[k] == _ || b[k] == |)) f = 0;
                }
                if(f) {
                    if(num % 4 == 0) {
                        if(j <= 2) a[num].push_back(j);
                    }else if(num % 4 == 2) {
                        if(j <= 5) a[num].push_back(j);
                    }else {
                        a[num].push_back(j);
                    }
                }
            }
            num++;
        }
        dfs(0);
        if(tol != 1) printf("Not Sure\n");
        else printf("%02d%02d\n", h, m);
    }
    return 0;
}

如有不当之处欢迎指出!

以上是关于poj1476的主要内容,如果未能解决你的问题,请参考以下文章

图像分割基于K-means聚类算法图像分割含Matlab源码 1476期

UVA - 1476 - Error Curves

UVa1476

POJ2778DNA Sequence(AC自动机)

POJ3691DNA repair(AC自动机,DP)

uva 1476(三分)