HOJ 1447 Compromise (DP)
来源:互联网 发布:磁力链接在线播放软件 编辑:程序博客网 时间:2024/04/27 23:35
是一道要记录公共子序列内容的DP。
状态转移方程部分:
for(int i=1; i<=len1; i++) { for(int j=1; j<=len2; j++) { if(!strcmp(str1[i],str2[j])) { f[i][j]=f[i-1][j-1]+1; } else { f[i][j]=max(f[i-1][j],f[i][j-1]); } } }
前半部分先是正常的DP,输出时要倒过来进行判断。
int i=len1; int j=len2; int k=0; while (i >= 1 && j >=1) { if ((f[i][j] == f[i-1][j-1] +1)&&(f[i][j] != f[i-1][j])&&(f[i][j] != f[i][j-1])) { strcpy(record[k++],str1[i]); i--; j--; } else if (f[i][j] == f[i-1][j]) i--; else if (f[i][j] == f[i][j-1])j--; } k--; while(k>=1) //输出的时候一定要小心~!~!~!注意空格,回车 { printf("%s ",record[k]); k--; }
通过if判断出每一个状态f[i][j]是从哪一个状态转移过来的,如果是从f[i-1][j-1]转移过来的话,则说明这里str1[i]==str2[j],是公共的。用一个二维字符数组记录下这一公共的字符串。
最后,再将record倒序输出。
这题被卡了很久主要是输出时的空格和换行没处理好。貌似是在最后一个单词后面多输出了一个空格。。要细心啊~
- HOJ 1447 Compromise (DP)
- HOJ 1447 Compromise
- DP::Poj1015 July Compromise
- DP----POJ1015 Jury Compromise
- POJ2250 Compromise,map、dp
- 【TOJ 1139】Compromise【DP】
- uva--531Compromise+dp
- POJ2250 Compromise(dp)
- POJ1015 Jury Compromise(DP)
- pku 1015 Jury Compromise DP
- UVa 531 Compromise (DP&LCS)
- Compromise-dp加标记路径
- [dp] poj 1015 Jury Compromise
- poj 1015 Jury Compromise dp
- POJ 1015 Jury Compromise(DP)
- POJ 1015 Jury Compromise ---- DP
- TOJ 1139.Compromise(LCS DP)
- DP-POJ-1015-Jury Compromise
- 数据库应用系统权限控制-(行锁/按钮锁on java,php,aspx)
- 版面的附加元素
- splay的基本操作及相关例题 未完待续
- rcp(插件开发)如何打开help信息、动态帮助信息
- ASP.net积累
- HOJ 1447 Compromise (DP)
- HDU 2138 How many prime numbers
- G711 G723 G729线路占多少带宽问题
- Sqlserver 2008 局域网异机备份方法
- Android中使用AsyncTask异步更新UI界面
- 网站收录与百度排名的关系
- 重构http请求
- 左右法则 来解析指针问题
- CRF 移植