n《=50W。(使用26个字母)

构造方法:26个,最多构造出26^4种不同的串,长度最长是26^4+3,大于是输出“impossble”,用四维数组判重。每次向前构造一位(先从上一位字符后一个开始),这样,可以构造出26^4-25种,打印出来发现(bbbb~zzzz),构造不出来,于是,学习了他人方法,把这些放在最前面,再重复上述方法构造即可(以后都可以用这种向前推一法构造)。

PS:从中额外学得:若用string 的s=s+char,拼接,速度很慢,用char s[],然后s[size++]=char,快得多。输出有点意思,直接输出n个即可,末地址起。

#include<iostream>  //46MS
#include<string>
#include<cstdio>
using namespace std;
int mark[26][26][26][26];
char s[480000];
int size=0;
int main()
{
int n;
for(int i=0;i<26;i++)
{
s[size++]=char(i+'a');
s[size++]=char(i+'a');
s[size++]=char(i+'a');
s[size++]=char(i+'a');
}
for(int i=0;i<size-3;i++)
mark[s[i]-'a'][s[i+1]-'a'][s[i+2]-'a'][s[i+3]-'a']=1;
int t1=25,t2=25,t3=25;
for(int i=104;i<=456979;i++)
{
int count1=0;
for(int j=t3+1;count1<2;j++)
{
if(j==26)
{
j=0;
count1++;
}
if(mark[t1][t2][t3][j]==0)
{
mark[t1][t2][t3][j]=1;
char temp=j+'a';
s[size++]=temp;
t1=t2;t2=t3;t3=j;
break;
}
}
}
/* for(int i=0;i<26;i++)
for(int j=0;j<26;j++)
for(int k=0;k<26;k++)
for(int t=0;t<26;t++)
if(mark[i][j][k][t]==0)
printf("%d%d%d%d\n",i,j,k,t);*/
while(cin>>n)
{
if(n>26*26*26*26+3)
{
cout<<"Impossible"<<endl;
continue;
}
else
{
printf("%s\n",s+456979-n);//输出n个字符!后面的是起始地址!
}
}
return 0;
}

HDU4850 构造一个长度为n的串,要求任意长度为4的子串不相同的更多相关文章

  1. HDU4850 构造一个长度n串,它需要随机长度4子是不相同

    n<=50W.(使用26快报) 构造函数:26一个.截至构建26^4不同的字符串,最长的长度26^4+3.如此之大的输出"impossble",被判重量的四维阵列. 在正向结 ...

  2. C语言---递归反向输出任意长度的字符串

    (该字符串可以包含空格和回车!) [题目要求] 编写一个递归函数,实现将输入的任意长度的字符串反向输出的功能. 例如输入字符串:ABCD,输出字符串:DCBA. [题目分析] 应用递归的思想有时可以很 ...

  3. hiho#1449 重复旋律6 求长度为k的串最大次数 后缀自动机

    题目传送门 题目大意:求长度为k的串的最大次数,把k从1到length的所有答案全部输出. 思路: 这道题放在$SAM$里就是求长度$k$对应的所有$right$集中最大的大小. 我们以$aabab$ ...

  4. Linux内核设计第三周——构造一个简单的Linux系统

    Linux内核设计第三周 ——构造一个简单的Linux系统 一.知识点总结 计算机三个法宝: 存储程序计算机 函数调用堆栈 中断 操作系统两把宝剑: 中断上下文的切换 进程上下文的切换 linux内核 ...

  5. 第三节 构造一个简单的Linux系统MenuOS——20135203齐岳

    第三节 构造一个简单的Linux系统MenuOS By 20135203齐岳 Linux内核源代码 arch/ 支持不同cpu的源代码 Documentations/ 文档存储 init/ 内核启动相 ...

  6. Linux内核分析第三周学习总结:构造一个简单的Linux系统MenuOS

    韩玉琪 + 原创作品转载请注明出处 + <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 一.Linux内 ...

  7. (字符串的模式匹配4.7.18)POJ 2406 Power Strings(求一个字符串的最小重复串)

    注意,在IDE运行时,可能会因为开的数组太大而报错,这时我们可以把数组开小一点来进行调试....提交的时候把数组的大小改成1000005即可.... #include <iostream> ...

  8. tensorflow笔记(二)之构造一个简单的神经网络

    tensorflow笔记(二)之构造一个简单的神经网络 版权声明:本文为博主原创文章,转载请指明转载地址 http://www.cnblogs.com/fydeblog/p/7425200.html ...

  9. 如何构造一个简单的USB过滤驱动程序

    本文分三部分来介绍如何构造一个简单的USB过滤驱动程序,包括"基本原理"."程序的实现"."使用INF安装".此文的目的在于希望读者了解基本 ...

随机推荐

  1. Android 使用 adb命令 远程安装apk

    Android 使用 adb命令 远程安装apk ./adb devices 列出所有设备 ./adb connect 192.168.1.89 连接到该设备 ./adb logcat 启动logca ...

  2. Bootstrap历练实例:响应式导航栏

    响应式的导航栏 为了给导航栏添加响应式特性,您要折叠的内容必须包裹在带有 classes .collapse..navbar-collapse 的 <div> 中.折叠起来的导航栏实际上是 ...

  3. 正则表达式匹配:根据key获取value

    需求 url请求html字符串,dytk值写在js里,可以看成是key-value的格式,需要提取dytk值. 解决方法 正则匹配 private string get_dytk(string htm ...

  4. 【数位dp】bzoj1799: [Ahoi2009]self 同类分布

    各种奇怪姿势的数位dp Description 给出a,b,求出[a,b]中各位数字之和能整除原数的数的个数. Sample Input 10 19 Sample Output 3 HINT [约束条 ...

  5. python中 “==”和"is"的区别

    python中 "=="是相等性比较,比较的是两个对象中的值是否相等,而“is”是一致性比较,比较的是两个对象中的内存地址 a = [1, 2, 3] b = a 此时, a == ...

  6. 与LCD_BPP相关的函数

    board/freescale/mx6q_sabresd/mx6q_sabresd.c:    panel_info.vl_bpix = LCD_BPP; common/lcd.c:   off  = ...

  7. nw335 debian sid x86-64 -- 2 驱动的方式

    1 linux内核自带 2 realtek 提供的官方驱动 3 使用xp的驱动 4 第三方驱动(现在成功的,最好的方式)

  8. SQL SERVER 占用资源高的SQL语句

    --SQL SERVER 占用资源高的SQL语句: --查询占用cpu高的前 50 个 SQL 语句 SELECT total_cpu_time,[total_physical_Reads], tot ...

  9. C#显示相机实时画面

    public partial class Form1 : Form { ICogAcqFifo mAcqFifo2;//定义一个相机对象 private ICogFrameGrabber mFrame ...

  10. joyoi1864 守卫者的挑战

    #include <algorithm> #include <iostream> #include <cstdio> using namespace std; in ...