栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

zoj 3050 Painting

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

zoj 3050 Painting

#include <set>#include <vector>#include <cstdio>#include <utility>#include <algorithm>using namespace std;typedef pair<int, int> Point;typedef pair<Point, Point> Line;const int mask[10] = {0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f};Line line1(int x, int y, int dx, int dy){    return make_pair(make_pair(x, y), make_pair(x + dx, y + dy));}Line line2(int x, int y, int dx, int dy){    return make_pair(make_pair(x + dx, y + dy), make_pair(x, y));}int judge(const set<Line>& st, const int l){    int m = 0;    if (st.count(line1(0, 0, 0, 1)) || st.count(line2(0, 0, 0, 1))) m |= 1;    if (st.count(line1(0, 0, 1, 0)) || st.count(line2(0, 0, 1, 0))) m |= 2;    if (st.count(line1(l, 0, 1, 0)) || st.count(line2(l, 0, 1, 0))) m |= 4;    if (st.count(line1(2 * l, 0, 0, 1)) || st.count(line2(2 * l, 0, 0, 1))) m |= 8;    if (st.count(line1(l, l, 1, 0)) || st.count(line2(l, l, 1, 0))) m |= 16;    if (st.count(line1(0, l, 1, 0)) || st.count(line2(0, l, 1, 0))) m |= 32;    if (st.count(line1(l, 0, 0, 1)) || st.count(line2(l, 0, 0, 1))) m |= 64;    for (int i = 0; i < 10; i++) {        if (mask[i] == m) { return i;        }    }    return -1;}char buf[128];int main(void){    while (scanf("%s", buf) != EOF) {        bool flag;        Point p, pp;        vector<Point> vp;        vector<Line> vl;        flag = true;        p = make_pair(0, 0);        for (int i = 0; buf[i]; i++) { if (buf[i] == 'u' || buf[i] == 'd') {     flag = (buf[i] == 'd');     continue; } pp = p; switch(buf[i]) {     case 'U': --pp.first; break;     case 'D': ++pp.first; break;     case 'L': ++pp.second; break;     case 'R': --pp.second; break; } if (flag) {     vl.push_back(make_pair(p, pp));     vp.push_back(p);     vp.push_back(pp); } p = pp;        }        int x = vp[0].first, y = vp[0].second, l = 0;        for (size_t i = 0; i < vp.size(); i++) { x = min(x, vp[i].first); y = min(y, vp[i].second);        }        for (size_t i = 0; i < vp.size(); i++) { l = max(l, vp[i].first - x);        }        l /= 2;        set<Line> sl;        for (size_t i = 0; i < vl.size(); i++) { vl[i].first.first -= x; vl[i].first.second -= y; vl[i].second.first -= x; vl[i].second.second -= y; sl.insert(vl[i]);        }        printf("%dn", judge(sl, l));    }    return 0;}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/374789.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号