解码,暴力。

恬不知耻地把暴力题解放了上来,因为k比较小,直接暴力找到字符串第k大就可以了。

编码解码就是根据组合数学公式算出来它到底在哪。

dfs返回bool就能使得找到字典序第k大字符串以后退出dfs,节省时间。

#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
const int maxl = 30; char s[3][maxl][maxl];
int ok[3][maxl][maxl];
int cnt[maxl],a[maxl][maxl];
int res,num,last;
int p[maxl]; bool dfs(int n) {
if(n==6) {
num++;
if(num==last) {
for(int i=1;i<=5;i++) printf("%c",p[i]+'A');
printf("\n");
return true;
}
return false;
}
for(int i=1;i<=cnt[n];i++) {
p[n]=a[n][i];
if(dfs(n+1)) return true;
}
return false;
} int main() {
int T;
scanf("%d",&T);
while(T--) {
scanf("%d",&last);
memset(ok,0,sizeof(ok));
memset(cnt,0,sizeof(cnt));
for(int k=1;k<=2;k++)
for(int i=1;i<=6;i++) {
scanf("%s",s[k][i]+1);
for(int j=1;j<=5;j++)
ok[k][j][s[k][i][j]-'A']=1;
}
for(int i=1;i<=5;i++)
for(int j=0;j<26;j++)
if(ok[1][i][j]&&ok[2][i][j])
a[i][++cnt[i]]=j;
res=1; num=0;
for(int i=1;i<=5;i++) res*=cnt[i];
if(res<last) printf("NO\n");
else dfs(1);
}
return 0;
}

uva1262Password的更多相关文章

  1. UVA1262Password(第K字典序)

    题目链接 紫书P323 题意:两个6*5的字母矩阵,两个矩阵每列相同的字母,每列取一个,求按照字典序第k小的序列 分析: 对于第一个样例来说,我们得到{ACDW}.{BOP}.{GMOX}.{AP}. ...

随机推荐

  1. UI控件tag属性和魔法数字的处理

    说明:tag属性有很大的用处,它就好像每个UI控件的id,当多个按钮指向同一个监听方法时,可以给方法带参数UIButton,然后根据不同的tag值 来判断执行哪个按钮的监听事件: - (IBActio ...

  2. js遍历集合

    首先,描述一下问题.由于需要后台取出数据,遍历展示在table中,大体如下: 后台取出的是 Map<String , List<Object>>,下面是我写得比较朴素一点的写法 ...

  3. 1561:The more, The Better - hdu

    Problem DescriptionACboy很喜欢玩一种战略游戏,在一个地图上,有N座城堡,每座城堡都有一定的宝物,在每次游戏中ACboy允许攻克M个城堡并获得里面的宝物.但由于地理位置原因,有些 ...

  4. XCode签名证书死活不能选

    Editors>Show Values on Xcode , then you can select the code sign instead of typing

  5. ios map 显示用户位置

    昨天遇到个奇怪的问题,用户的位置在地图中死活不显示,showUserLocation也设置了,最后发现是因为实现了 mapView protocol中的一个方法: -(MKAnnotationView ...

  6. VMware虚拟机中Hadoop服务的端口无法访问的问题

    今天安装了一个hadoop集群,因为已经在单个虚拟机上安装成功,所以初期安装相对顺利. 初始环境如下:       通过Vmware Esxi服务器虚拟机出来四台机器,每台机器的网络配置如下:     ...

  7. Linux开机执行bash脚本

    问题描述:     Linux开机执行bash脚本     问题解决:         (1)在 /etc/init.d文件夹中新建一个脚本myinit                     (2) ...

  8. 解决ubuntu中zip解压的中文乱码问题

    转自解决ubuntu中zip解压的中文乱码问题 在我的ubuntu12.10中,发现显示中文基本都是正常的,只有在解压windows传过来的zip文件时,才会出现乱码.所以,我用另一个方法解决中文乱码 ...

  9. android 解析XML方式(二)

    上一节中,我们使用DOM方式解析xml文档,该方式比较符合我们日常思维方式,容易上手,但是它直接把文档调入内存中,比较耗内存.在这里我们可以用另外一种方式解析xml,这个就是SAX方式. SAX即是: ...

  10. EF提供的三种查询方式

    這邊簡單介紹一下,ADO.Net Entity Framework 提供的三種查詢方式, Linq to Entities Query Builder Mothed Entity SQL Langua ...