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

poj 3821 Clickomania

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

poj 3821 Clickomania

#include <iostream>#include <string>using namespace std;#define MAX 151int sov[MAX][MAX],rig[MAX];bool tag[MAX];bool search(int low,int up){    if(sov[low][up] != -1)        return sov[low][up]==0?false:true;    if(low > up)return true;    if(tag[low]){  //情况1        sov[low+1][up] = search(low+1,up);        if(sov[low+1][up])return true;    }    int i,j;    i = rig[low];    while(i != -1 && i < up)   //情况2    {        sov[low][i] = search(low,i);        sov[i+1][up] = search(i+1,up);        if(sov[low][i] && sov[i+1][up])return true;        i = rig[i];    }    if(i == -1 || i > up)return false;    if(i == up)   //情况3    {        sov[low+1][up-1] = search(low+1,up-1);        if(sov[low+1][up-1])return true;        for(j = rig[low];j < up;j = rig[j])        { sov[low+1][j-1] = search(low+1,j-1); sov[j+1][up-1] = search(j+1,up-1); if(sov[low+1][j-1] && sov[j+1][up-1])return true;        }    }    return false;}int main(){    char s[MAX];    int i,j,n,vis[30];    while(scanf("%s",&s)!=EOF)    {        memset(tag,0,sizeof(tag));        j = 0;        for(i = 1;i < strlen(s);i ++){ if(s[i] == s[j])     tag[j] = true; else     s[++j] = s[i];        }        n = j+1;        memset(rig,-1,sizeof(rig));        memset(vis,-1,sizeof(vis));        for(i = 0; i < n;i ++){ if(vis[s[i]-'A'] == -1)     vis[s[i]-'A'] = i; else{     rig[vis[s[i]-'A']] = i;     vis[s[i]-'A'] = i; }        }        memset(sov,-1,sizeof(sov));        for(i = 0;i < n;i ++) sov[i][i] = tag[i];        if(search(0,n-1))printf("solvablen");          else printf("unsolvablen");    }    return 0;}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/375913.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

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

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