POJ 3188暴搜
来源:互联网 发布:小商店记账软件 编辑:程序博客网 时间:2024/05/18 00:27
题意:
思路:
裸的暴搜 …….
但是要注意如果你不用所有的按键就能输出最优解的话一定要把所有的字母都安排到一个位置….
我的一群PE就是这么来的……
为什么写的人这么少……
// by SiriusRen#include <cstdio>#include <cstring>#include <algorithm>using namespace std;int b,l,d,mod=10000007,vis[10000007],rec[66],tot=0,change[66],answer=0,num[10000007],ANS[66];char s[1005][20];void dfs(int x,int used){ if(used==b) { int ans=0; tot++; for(int i=1;i<=b;i++) for(int j=rec[i-1]+1;j<=rec[i];j++) change[j]=i; for(int j=1;j<=d;j++) { int jy=0; for(int k=1;k<=s[j][0];k++) { jy=(jy*l+change[s[j][k]])%mod; } if(vis[jy]!=tot) { vis[jy]=tot; ans++; } else { if(num[jy]!=tot) { num[jy]=tot; ans--; } } } if(answer<=ans&&change[l]==b) { answer=ans; for(int i=1;i<=l;i++) { ANS[i]=change[i]; } } return; } for(int i=x+1;i<=l;i++) { rec[used]=i; dfs(i,used+1); }}int main(){ scanf("%d%d%d",&b,&l,&d); rec[b]=l; for(int i=1;i<=d;i++){ scanf("%s",s[i]+1); s[i][0]=strlen(s[i]+1); for(int j=1;j<=s[i][0];j++) s[i][j]=s[i][j]-'A'+1; } dfs(0,1); printf("%d\n",answer); for(int i=1;i<=l;i++) { printf("%c",i+'A'-1); if(ANS[i]!=ANS[i+1])puts(""); }}
0 0
- POJ 3188暴搜
- POJ 3188 Cellphones 可能会
- poj 1419 暴搜
- POJ 2676 Sudoku [暴搜]
- poj-2531-暴搜+回溯
- poj 2488 暴搜
- poj 1006 暴搜
- POJ 3009 dfs暴搜
- POJ 1416 暴搜
- POJ 1414 暴搜
- POJ 1543 暴搜
- POJ 1950暴搜
- POJ 2110 二分+暴搜
- POJ 2133 暴搜
- POJ
- poj
- POJ
- POJ
- Apk 分析与Hook技术
- 关于QQ邮箱“命令顺序不正确。 服务器响应为:Error: need EHLO and AUTH first !”问题
- Java中如何解决double和float精度不准的问题
- ffmeng在线教程
- LDD3学习笔记(1) 写笔记的原因和搭建环境
- POJ 3188暴搜
- 多版本JAVA 共存 JAVA版本升级迁移(windows)
- JNI_NDK调用C语言
- 条款十九:了解临时对象的来源
- 九度OJ题目1201:二叉排序树
- Android本地登录与WebView网页登陆同步问题(cookie同步问题)
- 年终总结
- ros基础
- Hadoop2.0安装包目录结构分析