示例#1
0
            bool cut(Unicode::const_iterator begin , Unicode::const_iterator end, vector<TrieNodeInfo>& segWordInfos)const
            {
                if(!_getInitFlag())
                {
                    LogError("not inited.");
                    return false;
                }
                SegmentContext segContext;

                //calc DAG
                if(!_calcDAG(begin, end, segContext))
                {
                    LogError("_calcDAG failed.");
                    return false;
                }

                if(!_calcDP(segContext))
                {
                    LogError("_calcDP failed.");
                    return false;
                }

                if(!_cut(segContext, segWordInfos))
                {
                    LogError("_cut failed.");
                    return false;
                }

                return true;
            }
示例#2
0
文件: cut.c 项目: lufb/code
static int
cut(struct cut_option *op, const char *file)
{
    char            tmpline[MAX_LINE_BUF_SIZE];
    FILE            *fp = open_simplefile(file);
    int             err;

    memset(tmpline, 0, MAX_LINE_BUF_SIZE);
    while(fgets(tmpline, MAX_LINE_BUF_SIZE, fp) != NULL)
    {
        if((err = _cut(op, tmpline)) != 0)
            return err;
        memset(tmpline, 0, MAX_LINE_BUF_SIZE);
    }

    if(ferror(fp))
    {
        fprintf(stderr,
                "fgets [%s] happend some error[%s]\n",
                file, strerror(errno));
        fclose(fp);
        exit(1);
    }

    fclose(fp);
    return 0;
}
示例#3
0
	node<V>* _decreaseKey(node<V>* heap,node<V>* n,V value) {
		if(n->value<value)return heap;
		n->value=value;
		if(n->value<n->parent->value) {
			heap=_cut(heap,n);
			node<V>* parent=n->parent;
			n->parent=NULL;
			while(parent!=NULL && parent->marked) {
				heap=_cut(heap,parent);
				n=parent;
				parent=n->parent;
				n->parent=NULL;
			}
			if(parent!=NULL && parent->parent!=NULL)parent->marked=true;
		}
		return heap;
	}
示例#4
0
unsigned char DisInfo(struct words_info *words)
{
    char *path, *size, *wrdf, *wrdl;
    int i, len = 0, key;
_resize:
    path = _cut(1, getmaxx(stdscr) - 14, words->fpath);
    size = _husize(words->size);
    for (i = 0; i < 6; i++)
        len += _intlength(words->num[i]);
    len += 7;
    wrdf = _cut(2, getmaxx(stdscr) - 14, words->p->mean);
    wrdl = _cut(2, getmaxx(stdscr) - 14, words->p->prev->mean);
    len = _max(strlen(path), _max(strlen(size), _max(len, _max(strlen(wrdf), strlen(wrdl))))) + 12;
    clear();
    border('|', '|', '-', '-', '+', '+', '+', '+');
    _mvchgrectat(1, 1, getmaxy(stdscr) - 2, getmaxx(stdscr) - 2, 0, clr_ibkg, NULL);
    i = (getmaxy(stdscr) - 8) / 2 + 1;
    attron(COLOR_PAIR(clr_ides));
    mvaddstr(i++, 1, "单词表文件: ");
    mvaddstr(i++, 1, "文件大小:   ");
    mvaddstr(i++, 1, "单词个数:   ");
    mvaddstr(i++, 1, "第一个单词: ");
    mvprintw(i++, 1, "最后一个:   ");
    attroff(COLOR_PAIR(clr_ides));
    attron(COLOR_PAIR(clr_con) | A_BOLD);
    mvaddstr(i++, 1, "按回车键继续,返回键返回...");
    attroff(COLOR_PAIR(clr_con) | A_BOLD);
    i = (getmaxy(stdscr) - 8) / 2 + 1;
    attron(COLOR_PAIR(clr_igvn));
    mvaddstr(i++, 13, path);
    mvaddstr(i++, 13, size);
    mvprintw(i++, 13, "%d (%d/%d/%d/%d/%d)", words->num[0], words->num[1], words->num[2], words->num[3], words->num[4], words->num[5]);
    mvaddstr(i++, 13, wrdf);
    mvaddstr(i++, 13, wrdl);
    attroff(COLOR_PAIR(clr_igvn));
    refresh();
    while (key = getch(), key != '\n' && key != 033)
        goto _resize;
    free(path);
    free(size);
    free(wrdf);
    free(wrdl);
    return key != 033;
}