P1278 单词游戏

Posted 1129-tangqiyuan

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 

技术图片

 

以上是关于P1278 单词游戏的主要内容,如果未能解决你的问题,请参考以下文章

在游戏中添加新单词

游戏 英语 背单词 开心背单词 朗读字母 汉语 英语 动画 轻松记住单词

记录--Canvas实现打飞字游戏

单词游戏

小游戏架构手稿—背单词

模拟猜单词游戏