CF335B
/*CF335B
这个题目的n达到50000,但是串只是有小写字母组成,所以如果字符串的长度大于2600,那么
肯定存在,所开始输入就判断如果长度大于2600,那么直接找当个字母输出100个
否则执行LCS模块,然后判断所得最长公共是否大于100,如果小于100,那么直接输出最长公共
否则从两头分别取50个输出*/
#include<stdio.h>
#include<string.h>
int dp[][],dir[][];
char a[],b[],c[];
void LCS(int n,int m)
{
int i,j;
memset(dp,,sizeof(dp));
memset(dir,,sizeof(dir));
for(i=;i<=n;i++)
for(j=;j<=m;j++)
{
if(a[i-]==b[j-])
{
dp[i][j]=dp[i-][j-]+;
dir[i][j]=;
}
else if(dp[i-][j]>dp[i][j-])
{
dp[i][j]=dp[i-][j];
dir[i][j]=;
}
else
{
dp[i][j]=dp[i][j-];
dir[i][j]=;
}
}
}
int cont=;
void print(int n,int m)
{
if(n== || m==) return;
if(dir[n][m]==)
{
print(n-,m-);
c[cont++]=a[n-];
}
else if(dir[n][m]==) print(n-,m);
else print(n,m-);
}
int main()
{
int j,n;
int hash[],flag=,i=;
char s;
memset(hash,,sizeof(hash));
gets(a);
n=strlen(a);
for(i=;i<n;i++)
{
hash[a[i]]++;
}
for(i=;i<;i++)
{
if(hash['a'+i]>=) { s='a'+i; flag=; break;}
}
if(flag)
{
for(i=;i<=;i++)
printf("%c",s);
printf("\n");
}
else
{
for(i=,j=n-;i<n;i++,j--)
b[j]=a[i];
cont=;
memset(c,,sizeof(c));
LCS(n,n);
print(n,n);
int num=strlen(c);
//printf("%d\n",num);
char m1[],m2[];
if(num<=) printf("%s\n",c);
else
{
memset(m1,,sizeof(m1));
memset(m2,,sizeof(m2));
for(i=;i<;i++)
m1[i]=c[i];
for(i=num-,j=;i>=num-;i--,j--)
m2[j]=c[i];
//int num1=strlen(m1);
//int num2=strlen(m2);
printf("%s%s\n",m1,m2);
} }
return ;
}
CF335B的更多相关文章
随机推荐
- WPF通过异常来验证用户输入
在WPF中使用数据绑定,如果用户输入和绑定类型转换失败,控件就会显示出现错误的模板, 比如一个Textbox绑定到一个int 属性,如果用户输入一个string,那这个textbox就会显示错误模板, ...
- asp.net正则表达式删除指定的HTML标签的代码
抓取某网页的数据后(比如描述),如果照原样显示的话,可能会因为它里面包含没有闭合的HTML标签而打乱了格式,也可能它里面用了比较让人 费解 的HTML标签,把预订的格式搅乱. 如果全盘删除里面的 HT ...
- 把登录和退出功能单独写到一个公共.py脚本,其它用例test1,test2调用公共登录,退出函数
公共登录/退出函数模块(login_exit.py): #coding:utf-8import timedef login(driver, username, password):#此处的driver ...
- Database Designer
DBDesigner http://fabforce.net/dbdesigner4/index.php DB Designer Fork http://sourceforge.net/project ...
- Office Developer Tools for Visual Studio 2012现在可用了
[原文发表地址] Now Available: Office Developer Tools for Visual Studio 2012 正如我以前写过的,我们正在为构建下一代Office和 S ...
- ios消息推送机制原理与实现
本文转载至 http://hi.baidu.com/yang_qi168/item/480304c542fd246489ad9e91 Push的原理: Push 的工作机制可以简单的概括为下图 图中, ...
- Android 切换主题以及换肤的实现
Android 切换主题以及换肤的实现 一.介绍 现在市面上有很多 APP 有切换主题和皮肤的功能!特别是阅读类的 APP! 上面两张图分别是 知乎 APP 和Fuubo APP的两张截图!都带有切换 ...
- android应用安全——数据安全
数据安全包含数据库数据安全.SD卡数据(外部存储)安全.RAM数据(内部存储)安全. android中操作数据库可使用SQLiteOpenHelper或ContentProvider的方式.使用SQL ...
- delphi 快捷键的使用
CTRL+SPACE 代码补全,很好用的(先改了输入法热键)CTRL+SHIFT+C 编写申明或者补上函数CTRL+SHIFT+↑(↓) 在过程.函数.事件内部, 可跳跃到相应的过程.函数.事件的定义 ...
- oracle用于判断时间条件为当天的写法(当前日期加一天)
trunc(sysdate + 1, 'dd')为当前日期加一天: 来自: and wf.start_time between sysdate and trunc(sysdate + 1, 'dd') ...