UVA-129 Krypton Factor(回溯)
2024-08-31 02:23:14
题目大意:由字母A到Z组成的字符串,其中有两个子串完全相同的叫做容易的串,反之叫困难的串。找出由前L个字母组成的第n个困难的串。
题目分析:简单回溯,不过要判断是否存在重复子串比较棘手。《入门经典》上借鉴八皇后问题,只判断添进字符后是否存在连续子串。具体做法是这样的,以长度为对象枚举以新添进字符为尾巴的子串,看是否重复。
代码如下:
# include<iostream>
# include<cstdio>
# include<cstring>
# include<algorithm>
using namespace std; int n,k,cnt,path[1000]; void dfs(int cur)
{
if(cur>81)
return ;
if(cnt++==n){
for(int i=0;i<cur;++i){
printf("%c",char(path[i]+'A'));
if(i%4==3&&i!=cur-1){
if(i%64==63)
printf("\n");
else
printf(" ");
}
}
printf("\n%d\n",cur);
return ;
}
for(int i=0;i<k;++i){
path[cur]=i;
int flag=1;
for(int j=1;j*2<=cur+1;++j){
int ok=1;
for(int l=0;l<j;++l)
if(path[cur-l]!=path[cur-l-j]){
ok=0;
break;
}
if(ok){
flag=0;
break;
}
}
if(flag)
dfs(cur+1);
if(cnt>n)
return ;
}
} int main()
{
while(scanf("%d%d",&n,&k)&&(n+k))
{
cnt=0;
dfs(0);
}
return 0;
}
最新文章
- SignalR系列续集[系列8:SignalR的性能监测与服务器的负载测试]
- 网络-->;监控-->;单位换算
- JS图片懒加载
- Java核心技术II读书笔记(三)
- Linux服务器的常用备份方法
- 禁用ios7 手势滑动返回功能
- RSS新闻阅读器
- linux下串口的阻塞和非阻塞操作
- python初探-数据类型
- 一、SOAP简单对象访问协议讲解
- android里uri和url的区别
- (贪心 字符串 打好基础)51nod 1182完美字符串
- toFixed()精度丢失;复选框全选、取消
- [原][译]JSBSim官方源码文档翻译(google翻译)
- UI 设计的整个工作流程是怎样的?
- vue 父子组件之间传参
- HTML5仿微信公众号界面
- Python处理Excel和PDF文档
- redis概览
- Codeforces735B Urbanization 2016-12-13 11:58 114人阅读 评论(0) 收藏
热门文章
- 去掉chrome、safari input或textarea在得到焦点时出现黄色边框的方法
- HTTP返回码中301与302的区别(转)
- Python的Tornado框架的异步任务与AsyncHTTPClient
- PAT 1135 Is It A Red-Black Tree[难]
- python16_day36【爬虫1】
- js判断display隐藏显示
- C++中定义NULL的头文件
- 028-B+树(一)
- poj1329 Circle Through Three Points
- c# ArrayList 的排序问题!