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

zoj 1219 Pizza Anyone?

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

zoj 1219 Pizza Anyone?

#include<iostream>#include<vector>#include<string.h>#include<stdio.h>using namespace std;enum {    SIZ = 16,    MSK = (1<<SIZ) - 1,};char buf[100];int ptr[MSK+10], num;void fun(){    if(num==0){        printf("No pizza can satisfy these requests.n");    } else {        printf("Toppings: ");        int i,j, ans=ptr[0];        for (i=0,j=1; i<SIZ; ++i, j<<=1){ if (ans & j){     putchar('A'+i); }        }        printf("n");    }}void parse(char *s, vector<int> &res){    res.clear();    int i, v;    for (i=0; s[i]!=';'; i+=2){        v = (s[i+1]-'A') + 1;        if (s[i] == '-'){ v = -v;        }        res.push_back(v);    }}bool mat(int v, vector<int>&pat){    for (int i=0; i<pat.size(); ++i){        if (pat[i] > 0 && (v & (1<<(pat[i]-1)))){ return true;        } else if(pat[i] < 0 && (v&(1<<(-pat[i]-1)))==0){ return true;        }    }    return false;}int readIn(){    if(scanf("%s", buf)<0) return 0;    int i, j;    num = 1<<SIZ;    for (i=0; i<num; ++i){        ptr[i] = i;    }    vector<int> v;    while(buf[0]!='.'){        parse(buf, v);        j = 0;        for (i=0; i<num; ++i){ if (mat(ptr[i], v)){     ptr[j++] = ptr[i]; }        }        num = j;        scanf("%s", buf);    }    return 1;}int main(){    while(readIn() > 0){        fun();    }    return 0;}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/372373.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

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

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