栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

poj 1239 Increasing Sequences

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

poj 1239 Increasing Sequences

#include <iostream>#include <stdio.h>#include <string.h>#include <algorithm>using namespace std;const int maxn = 90;char s[maxn];int len, dpforward[maxn], dpbackward[maxn];bool cmp(int s1, int t1, int s2, int t2);int main(){    while(true)    {        scanf("%s", s);        len = strlen(s);        if(len == 1 && s[0] == '0') break;        memset(dpforward, 0, sizeof(dpforward));        memset(dpbackward, 0, sizeof(dpbackward));        for(int i = 1; i < len; i++)        { for(int j = 0; j < i; j++) {     if(cmp(dpforward[j], j, j+1, i))         dpforward[i] = max(dpforward[i], j+1); }        }        int tlen = dpforward[len-1];        dpbackward[tlen]  = len - 1;        for(int i = tlen - 1; s[i] == '0'; i--) dpbackward[i] = len - 1;        for(int i = tlen - 1; i >= 0; i--)        { for(int j = i; j <= tlen - 1; j++) {     if(cmp(i, j, j + 1, dpbackward[j+1]))         dpbackward[i] = max(dpbackward[i], j); }        }        int pos = dpbackward[0], i = 0;        while(i < len)        { while(i <= pos && i < len)     printf("%c", s[i++]); if(i < len)     printf(","); pos = dpbackward[pos + 1];        }        printf("n");    }    return 0;}bool cmp(int s1, int t1, int s2, int t2){    while(s[s1] == '0' && s1 <= t1)        s1++;    while(s[s2] == '0' && s2 <= t2)        s2++;    if(s1 > t1 && s2 > t2)        return true;    if((t1 - s1) > (t2 - s2))        return false;    else if((t1 - s1) < (t2 - s2))        return true;    else    {        for(int i = s1, j = s2; i <= t1; i++, j++)        { if(s[i] > s[j])     return false; else if(s[i] < s[j])     return true;        }    }    return false;}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/378086.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号