zoukankan      html  css  js  c++  java
  • P1278 单词游戏

    状态压缩,用二进制来保存状态

     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 int n;
     4 string words[17];
     5 int rem[17][70000];//末尾是第i个单词的时候,用了集合是j的元素 
     6 int ans;
     7 int dfs(int now,int book)
     8 {
     9     if(rem[now][book]!=-1)return rem[now][book];
    10     rem[now][book]=0;
    11     for(int i=0;i<n;i++)
    12     {
    13         if((words[now].end()-1)==words[i][0]/*取最后一个字母判断是否可以接*/&&((book&(1<<i))==0)/*是否用过*/)
    14         {
    15             rem[now][book]=max(rem[now][book],dfs(i,(book|(1<<i)))/*添加元素继续搜索*/);
    16         }
    17     }
    18     return rem[now][book]+=words[now].size();
    19 }
    20 int main()
    21 {
    22     memset(rem,-1,sizeof(rem));
    23     scanf("%d",&n);
    24     for(int i=0;i<n;i++)
    25         cin>>words[i];
    26     for(int i=0;i<n;i++)//枚举开头的单词 
    27     {
    28         ans=max(ans,dfs(i,(1<<i)));
    29     }
    30     printf("%d",ans);
    31 }

  • 相关阅读:
    js 实现自增长
    常用的js脚本验证
    Jquery 收集
    Jquery 常用操作搜集
    Jquery 点击绑定行 弹出详细页面
    Jquery 了解
    Html 标尺
    Editor Guidelines
    程序员需要做到
    jS 回车事件
  • 原文地址:https://www.cnblogs.com/1129-tangqiyuan/p/11614837.html
Copyright © 2011-2022 走看看