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

poj 1373 L

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

poj 1373 L

#include <stdio.h>#include <string.h>const int N = 1 << 16;const int M = 16;int vis[N], end;char a[M], b[M], begin[M], over[M];char que[N][M], pdn[200];int hash(char str[]) {int sum = 0, cnt = strlen(str);for (int i = 0; i < cnt; i++)sum = sum * 2 + str[i] - 'a' + 1;return sum % N;}void inInit() {memset(que, 0, sizeof(que));memset(vis, 0, sizeof(vis));scanf("%s%s%s", b, begin, over);end = hash(over);}bool bfs() {inInit();int t, i, j, k;int front = 0, rear = 0;for(i = 0; begin[i]; i++) {for(k = 0,j = i; begin[j] && over[k]; k++, j++)que[rear][k] = begin[j];que[rear][k] = '';t = hash(que[rear]);if(t == end)return 1;if(!vis[t]) {vis[t]=1;rear++;}}while(rear > front) {for(i = 0,k = 0; que[front][i]; i++) {if(que[front][i] == 'a')for(j = 0; a[j]; j++)pdn[k++] = a[j];else for(j = 0; b[j]; j++)pdn[k++] = b[j];}pdn[k] = '';for(i = 0; pdn[i]; i++) {for(k = 0,j = i; pdn[j] && over[k]; j++, k++)que[rear][k] = pdn[j];que[rear][k] = '';t = hash(que[rear]);if(t == end)return true;if(!vis[t]) {vis[t] = 1;rear++;}}front++;}return false;}int main() {while (scanf("%s", a) == 1) {printf("%sn", bfs() ? "YES" : "NO");}return 0;}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/373841.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

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

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