hdu1511 LCS
来源:互联网 发布:中国援助朝鲜 知乎 编辑:程序博客网 时间:2024/06/06 09:18
蒟蒻的自我拯救。。。
#include <cstdio>#include <cstring>using namespace std;char num[85];int dp[85], n;bool judge(int st1,int len1,int st2,int len2){ while (num[st1] == '0' && len1) st1++, len1--; while (num[st2] == '0' && len2) st2++, len2--; if (len1 < len2) return 1; else if (len1 > len2) return 0; else { for (int i = 0; i < len1; i++) { if (num[st1+i] < num[st2+i]) return 1; if (num[st1+i] > num[st2+i]) return 0; } } return 0;}void print(int pos){ if (pos > n) return; if (pos != 1) printf(","); for (int i = pos; i < pos + dp[pos]; i++) printf("%c", num[i]); print(pos + dp[pos]);}int main(){ while (~scanf("%s", num + 1) && strcmp(num + 1, "0")) { n = strlen(num + 1); dp[1] = 1; for (int i = 2; i <= n; i++) { dp[i] = i; for (int j = i - 1; j >= 1; j--) if (judge(j - dp[j] + 1, dp[j], j + 1, i - j)) { dp[i] = i - j; break; } } int pos = n - dp[n] + 1; dp[pos] = dp[n]; for (int i = pos - 1; i >= 1; i--) { if (num[i] == '0') { dp[i] = dp[i+1] + 1; continue; } for (int j = pos; j > i; j--) if (judge(i, j - i, j, dp[j])) { dp[i] = j - i; break; } } print(1); printf("\n"); } return 0;}
0 0
- hdu1511 LCS
- ZOJ1499 POJ1239 HDU1511 Increasing Sequences
- LCS
- LCS
- lcs
- LCS
- LCS
- LCS
- LCS
- LCS
- LCS
- LCS
- lcs
- LCS
- LCS
- lcs
- LCS
- LCS
- 最大的子序列和问题
- C语言合法标识符(2024)
- 自定义PHP页面跳转函数redirect($url, $time = 0, $msg = '')
- 常用RGB颜色表
- hdu3782 xxx定律
- hdu1511 LCS
- UVA 11419 SAM I AM (二分图,最小割)
- 50道Java习题之12
- 主动使用触发的初始化操作
- [iOS]iOS AudioSession详解 Category选择 听筒扬声器切换
- POJ1002解题报告
- 谈谈云计算虚拟化中lxc的安装
- codeforces Beta Round #19 D. Point (线段树 + set)
- 正则验证