POJ 2004 最长升序子序列
来源:互联网 发布:数据库字段设计规范 编辑:程序博客网 时间:2024/05/17 02:01
比赛中切掉的... 代码很冗余,没怎么仔细想总之,是一个最长升序子序列的题啦。
#include<iostream>#include<string.h>#include<cstdio>#include<algorithm>using namespace std;struct node{ char line[25]; int len; int count[27];}date[11111];bool cmp( node a,node b ){ if( a.len==b.len ) { if( strcmp(a.line,b.line)==0 ) return true; return false; } return a.len<b.len;}int main(){ //freopen( "text.in","r",stdin ); //freopen( "text.out","w",stdout ); int count=0; int pre[11111]; int dp[11111]; memset( date,0,sizeof(date) ); memset( pre,0xFF,sizeof(pre) ); memset( dp,0,sizeof(dp) ); while( scanf( "%s",date[count].line)!=EOF ) { date[count].len=strlen( date[count].line ); for( int i=0;i<date[count].len;i++ ) date[count].count[date[count].line[i]-'a']++; dp[count]=1; count++; } sort( date,date+count,cmp ); for( int i=1;i<count;i++ ) { for( int j=i-1;j>=0;j-- ) { if( date[i].len==date[j].len+1 ) { int cnt=0; for( int k=0;k<26&&cnt<=1;k++ ) if( date[i].count[k]!=date[j].count[k] ) cnt++; if( cnt==1 ) { if( dp[i]<dp[j]+1 ) { dp[i]=dp[j]+1; pre[i]=j; } } } if( date[j].len<date[i].len-1 ) break; } }int dp_max=0;int index=0;for( int i=0;i<count;i++ ) if( dp[i]>dp_max ) dp_max=dp[i],index=i; node ans[11111]; int len=0; for( int i=index;;i=pre[i] ) { ans[len]=date[i]; len++; if( pre[i]==-1 ) break;}for( int i=len-1;i>=0;i-- ) printf( "%s\n",ans[i].line ); return 0;}
- POJ 2004 最长升序子序列
- POJ 1887 一维DP 最长升序子序列 [暴弱]
- java最长升序子序列
- 【面试题】打印最长升序子序列
- 动态规划 最长升序子序列
- 动态规划:最长升序子序列
- 数组中最长的升序子序列
- 最长升序和降序子序列-作业题
- 求最长的升序子序列 并将最长的升序子序列输出
- POJ2533 Longest Ordered Subsequence 最长升序子序列
- 动态规划——最长升序子序列
- 最长升序和降序子序列-导弹拦截2
- POJ (简单 dp ,最长升序子串)
- 算法:最长升序降序序列(最长升序序列)
- 算法 : 最长升序降序序列
- POJ 2250 Compromise(最长公共子序列 列出子序列)
- POJ 1458 最长公共子序列
- POJ 1458 最长公共子序列
- Adobe FlashMediaServer(FMS) 4.5
- Example: Receive HTTP Post via ASP.Net Generic Handler
- float,double等精度丢失问题 float,double内存表示
- 传智播客java学习路线
- SSH Secure Shell Client 乱码问题
- POJ 2004 最长升序子序列
- 第五周实验报告任务4
- VC6在win7(64位)系统下的调试问题
- 可连接点对象及示例(一)
- 14种方法助你参与开源项目
- VS2008 MFC ATL编写简单的word菜单项
- 希腊字母对照表
- linux系统库函数之memset
- 随想录(软件开发不能是加工作坊)