uva 10029 递变阶梯
来源:互联网 发布:测向定位软件下载 编辑:程序博客网 时间:2024/04/30 10:33
求所给字典中最长递变且字典序升序的单词数
方法和最长上升子序列是一样的,判断的条件由LIS中的大小关系变成是否可递变
#include<stdio.h>#include<string.h>#define size 25010char word[25010][16];int len[25010];int dp[25010];int max(int a,int b){if(a<b)return b;elsereturn a;}void judge(int a,int b){int i,j=0,la,lb,l;la=len[a];lb=len[b];if(la-lb>1||lb-la>1)return ;l=max(la,lb);if(la==lb){for(i=0;i<l;i++){if(word[a][i]!=word[b][i])j++;}if(j==1){if(dp[a]+1>dp[b]){dp[b]=dp[a]+1;}return;}}else if(la==lb+1)//在a里删一个{int del;int k;for(del=0;del<la;del++){k=0;for(i=0;i<del;i++){if(word[a][i]!=word[b][i])k++;}for(i=del+1;i<la;i++){if(word[a][i]!=word[b][i-1])k++;}if(k==1&&dp[a]+1>dp[b]){dp[b]=dp[a]+1;return;}}}else if(la==lb-1){int del;for(del=0;del<lb;del++){int k=0;for(i=0;i<del;i++){if(word[a][i]!=word[b][i])k++;}for(i=del+1;i<lb;i++){if(word[a][i-1]!=word[b][i])k++;}if(k==1&&dp[a]+1>dp[b]){dp[b]=dp[a]+1;return;}}}}int main(){memset(len,-1,sizeof(len));memset(dp,0,sizeof(dp));memset(word,0,sizeof(word));int i=0,j,k=0,l=0,m=-1,n;while(gets(word[k])!=NULL){l=strlen(word[k]);len[k]=l;dp[k]=1;if(k>=1)for(i=k-1;i>=0;i--){judge(i,k);}if(m<dp[k]){m=dp[k];}k++;}printf("%d\n",m);return 0;}RE
- uva 10029 递变阶梯
- UVa Problem 10029 Edit Step Ladders (递变阶梯)
- 阶梯博弈
- 阶梯博弈
- 阶梯问题
- 阶梯博弈
- 阶梯博弈
- 阶梯电价
- 阶梯问题
- 阶梯问题
- 阶梯博弈
- 阶梯博弈
- 阶梯博弈
- 阶梯博弈
- 阶梯博弈
- 计算阶梯
- 蓝桥杯 第39阶梯 n阶梯 递归
- java工程阶梯
- 中断中处理延时及一些函数的调用规则(中断调i2c驱动有感)--中断中的延迟delay与printk函数的冲突
- 简单看一看H.264中的SPS和PPS
- 汇编,接收两个2位十进制数,相加后输出
- 李彦宏清华“姚班”专讲 分享互联网九大难题
- 职场上应避免“懒驴效应”
- uva 10029 递变阶梯
- java中的后缀运算符
- js对象宽高图文解释
- 二分查找Binary Search
- AJax技术
- Yii-编程- 常用调用收集
- sql散记
- 2012年的就业形势 - 献给2012已毕业和2012即将毕业的学子(漫步人生路)
- struts2提供的校验器