码迷,mamicode.com
首页 > 其他好文 > 详细

P1278 单词游戏

时间:2019-10-01 11:35:41      阅读:77      评论:0      收藏:0      [点我收藏+]

标签:rem   turn   printf   using   bit   二进制   namespace   ==   单词   

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

 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 }

技术图片

 

P1278 单词游戏

标签:rem   turn   printf   using   bit   二进制   namespace   ==   单词   

原文地址:https://www.cnblogs.com/1129-tangqiyuan/p/11614837.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!