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

PHP中的平衡自动换行(最小的不整洁度)

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

PHP中的平衡自动换行(最小的不整洁度)

用C ++快速又脏

#include <sstream>#include <iostream>#include <vector>#include <cstdlib>#include <memory.h>using namespace std;int cac[1000][1000];string res[1000][1000];vector<string> words;int M;int go(int a, int b){    if(cac[a][b]>= 0) return cac[a][b];    if(a == b) return 0;    int csum = -1;    for(int i=a; i<b; ++i){    csum += words[i].size() + 1;    }    if(csum <= M || a == b-1){    string sep = "";        for(int i=a; i<b; ++i){ res[a][b].append(sep); res[a][b].append(words[i]); sep = " ";    }    return cac[a][b] = (M-csum)*(M-csum);    }    int ret = 1000000000;    int best_sp = -1;    for(int sp=a+1; sp<b; ++sp){    int cur = go(a, sp) + go(sp,b);    if(cur <= ret){        ret = cur;        best_sp = sp;    }    }    res[a][b] = res[a][best_sp] + "n" + res[best_sp][b];    return cac[a][b] = ret;}int main(int argc, char ** argv){    memset(cac, -1, sizeof(cac));    M = atoi(argv[1]);    string word;    while(cin >> word) words.push_back(word);    go(0, words.size());    cout << res[0][words.size()] << endl;}

测试:

$ echo "The quick brown fox jumps over a lazy dog" |./a.out 10The quickbrown foxjumps overa lazy dog

编辑:只是在Wikipedia页面上查看了最低程度的衣衫wrap的自动换行。将算法更改为给定算法(惩罚为平方)



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/485652.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

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

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