亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? dmc.cpp

?? 非常好用的五子棋游戲源碼
?? CPP
字號:
// Created:10-17-98
// By Jeff Connelly

// Dynamic Markov Compression (DMC)

// Original code (ORIGSRC\DMC.C) comment states:
/*   Dynamic Markov Compression (DMC)    Version 0.0.0
 
 
     Copyright 1993, 1987
 
     Gordon V. Cormack
     University of Waterloo
     cormack@uwaterloo.ca
 
 
     All rights reserved.
 
     This code and the algorithms herein are the property of Gordon V. Cormack.
 
     Neither the code nor any algorithm herein may be included in any software,
     device, or process which is sold, exchanged for profit, or for which a
     licence or royalty fee is charged.
 
     Permission is granted to use this code for educational, research, or
     commercial purposes, provided this notice is included, and provided this
     code is not used as described in the above paragraph.
 
*/


#include "stdafx.h"
#define EXPORTING
#include "comprlib.h"

void dmc_encode();
void dmc_decode();
static void pinit(int memsize);
static void pflush();
static void preset();
static float predict();
static void pupdate(int b);

static int memsize = 0x1000000;

void EXPORT dmc_encode()
{
    int max = 0x1000000, min = 0, mid = 0, c, i, inbytes = 0, outbytes = 3;
    int pout = 3, bit;

    pinit(memsize);

    while (true)
    {
        c = read_byte();
        if (end_of_data())
        {
            min = max - 1;
            break;
        }
        for (i = 0; i < 8; i++)
        {
            bit = (c << i) & 0x80;
            min = min + (max - min - 1) * (int)predict();
            pupdate(bit);
            if (mid == min)
                ++mid;
            if (mid == (max - 1))
                --mid;

            if (bit)
                min = mid;
            else
                max = mid;

            while ((max - min) < 0x100)
            {
                if (bit)
                    --max;
                write_byte(min >> 0x10);
                ++outbytes;
                min = (min << 8) & 0xFFFF00;
                max = ((max << 8) & 0xFFFF00);
                if (min >= max)
                    max = 0x1000000;
            }
        }

        if (!(++inbytes) & 0xFF)
        {
            if (!(inbytes & 0xFFFF))
            {
            }
            if (outbytes - pout > 0x100)        // Compression failing
                pflush();

            pout = outbytes;
        }
    }
    write_byte(min >> 0x10);
    write_byte((min >> 8) & 0xFF);
    write_byte(min & 0x00FF);
}

void EXPORT dmc_decode()
{
    int max = 0x1000000, min = 0, mid, val, i, inbytes = 3, pin = 3;
    int outbytes = 0, bit, c;

    pinit(memsize);

    val = read_byte() << 0xF;
    val += read_byte() << 8;
    val += read_byte();

    while (true)
    {
        c = 0;
        if (val == (max - 1))
        {
            // Decompression done
            break;
        }
        for (i = 0; i < 8; i++)
        {
            mid = min + (max - min - 1) * (int)predict();
            if (mid == min)
                ++mid;
            if (mid == (max - 1))
                --mid;
            if (val >= mid)
            {
                bit = 1;
                min = mid;
            } else {
                bit = 0;
                max = mid;
            }
            pupdate(bit);
            c = c + c + bit;
            while ((max - min) < 0x100)
            {
                if (bit)
                    --max;
                ++inbytes;
                val = (val << 8) & 0xFFFF00 | (read_byte() & 0xFF);
                min = (min << 8) & 0xFFFF00;
                max = ((max << 8) & 0xFFFF00);
                if (min >= max)
                    max = 0x1000000;
            }
        }
        write_byte(c);
        if (!(++outbytes & 0xFF))
        {
            if (inbytes - pin > 0x100)      // Compression was failing
                pflush();
        }
        pin = inbytes;
    }
}

typedef struct nnn
{
    float count[2];
    struct nnn* next[2];
} node;

static int threshold = 2, bigthresh = 2;

static node* p, *pnew, nodes[0x100][0x100];

static node* nodebuf;
static node* nodemaxp;
static node* nodesptr;

#include <malloc.h>

// Initalize
static void pinit(int memsize)
{
    nodebuf = (node*)malloc (memsize);
    if (nodebuf == (node*)NULL)
    {
        EXCEPTION(ERR_MEMORY, "Memory allocation for predictor memory failed",
                              "pinit()");
    }
    nodemaxp = nodebuf + (memsize / sizeof(node)) - 20;
    pflush();
}

// Flush buffer
static void pflush()
{
    register int i, j;
    for (j = 0; j < 0x100; j++)
    {
        for (i = 0; i < 0x7F; i++)
        {
            nodes[j][i].count[0] = (float)0.2;
            nodes[j][i].count[1] = (float)0.2;
            nodes[j][i].next[0] = &nodes[j][2 * i + 1];
            nodes[j][i].next[1] = &nodes[j][2 * i + 2];
        }
        for (i = 0x7F; i < 0xFF; i++)
        {
            nodes[j][i].count[0] = (float)0.2;
            nodes[j][i].count[1] = (float)0.2;
            nodes[j][i].next[0] = &nodes[i + 1][0];
            nodes[j][i].next[1] = &nodes[i - 0x7F][0];
        }
    }
    nodesptr = nodebuf;
    preset();
}

static void preset()
{
    p = &nodes[0][0];
}

static float predict()
{
    return p->count[0] / (p->count[0] + p->count[1]);
}

// Update
static void pupdate(int b)
{
    float r;
    if (p->count[b] >= threshold
        && p->next[b]->count[0] + p->next[b]->count[1] >=
        bigthresh + p->count[b])
    {
        pnew = nodesptr++;
        p->next[b]->count[0] -= pnew->count[0] =
            p->next[b]->count[0] *
            (r = p->count[b] / (p->next[b]->count[1] + p->
            next[b]->count[0]));
        p->next[b]->count[1] -= pnew->count[1] =
            p->next[b]->count[1] * r;
        pnew->next[0] = p->next[b]->next[0];
        pnew->next[1] = p->next[b]->next[1];
        p->next[b] = pnew;
    }
    p->count[b]++;
    p = p->next[b];
    if (nodesptr > nodemaxp)
    {
        // Flush needed
        pflush();
    }
}




                 

                  

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美成人乱码一区二区三区| 在线这里只有精品| 婷婷丁香激情综合| 亚洲日本在线观看| 国产精品午夜电影| 日本一区二区三级电影在线观看| 精品国产1区2区3区| 欧美日韩激情一区| 欧美日韩黄色影视| 3751色影院一区二区三区| 91成人看片片| 欧美精品国产精品| 91精品国产91久久久久久最新毛片| 欧美在线免费播放| 欧美福利视频导航| 精品第一国产综合精品aⅴ| 91麻豆精品国产自产在线观看一区| 欧美日韩综合在线| 欧美疯狂做受xxxx富婆| 678五月天丁香亚洲综合网| 欧美老年两性高潮| 4438x亚洲最大成人网| 日韩一区二区三区精品视频| 日韩你懂的在线观看| 26uuu色噜噜精品一区二区| 日本一区二区视频在线观看| 中文乱码免费一区二区| 一区二区三区在线不卡| 日本中文在线一区| 国产一区二区调教| 成人午夜视频福利| 欧美专区亚洲专区| 欧美v亚洲v综合ⅴ国产v| 国产精品网曝门| 亚洲一区视频在线| 另类综合日韩欧美亚洲| 丁香六月综合激情| 欧美日韩一区二区在线视频| 91麻豆精品国产91久久久久久久久| 精品久久一区二区| 亚洲欧洲日本在线| 五月激情综合色| 国产 欧美在线| 欧美日韩精品高清| 国产三级一区二区三区| 午夜精品福利一区二区三区av| 久草这里只有精品视频| 色久优优欧美色久优优| 欧美v亚洲v综合ⅴ国产v| 亚洲精品国产高清久久伦理二区| 六月丁香婷婷久久| 欧美在线观看一区二区| 欧美激情资源网| 日本不卡一区二区三区高清视频| 成人av影视在线观看| 91精品婷婷国产综合久久| 国产精品成人一区二区三区夜夜夜 | 欧美日韩一级大片网址| 日本一区二区动态图| 日本不卡免费在线视频| 91麻豆福利精品推荐| 久久亚洲精品小早川怜子| 一区二区三区四区视频精品免费 | 欧美mv日韩mv国产网站| 一区二区在线免费| 波多野结衣在线一区| 日韩精品中文字幕在线不卡尤物| 有坂深雪av一区二区精品| 丁香天五香天堂综合| 欧美成人在线直播| 日本色综合中文字幕| 欧美日韩一区二区三区在线看| 综合电影一区二区三区 | 欧美在线观看视频在线| 亚洲激情在线播放| 99视频一区二区三区| 亚洲国产精品国自产拍av| 国产在线一区观看| 久久亚洲综合色| 国产麻豆视频一区二区| 精品盗摄一区二区三区| 激情欧美一区二区| 久久久久久一级片| 国产成人啪免费观看软件| 久久先锋资源网| 国产成人精品aa毛片| 欧美精品一区二区久久婷婷 | 精品美女被调教视频大全网站| 亚洲香蕉伊在人在线观| 日韩不卡一区二区| 欧美成人精品1314www| 亚洲国产精品久久不卡毛片| 91视频国产观看| 中文字幕乱码一区二区免费| 美女一区二区三区| 久久久午夜电影| 国产一区二区三区四| 精品欧美一区二区在线观看| 男人的天堂亚洲一区| 欧美久久久久久久久中文字幕| 亚洲综合色噜噜狠狠| 欧美乱妇23p| 免费成人深夜小野草| 日韩欧美国产综合一区 | 韩国一区二区三区| 精品国产乱码久久久久久老虎| 首页亚洲欧美制服丝腿| 欧美精品亚洲二区| 蜜臀久久久99精品久久久久久| 在线观看视频欧美| 卡一卡二国产精品| 久久午夜色播影院免费高清| 国产一区二区三区黄视频| 国产欧美日韩三级| 91在线视频18| 五月天亚洲精品| 精品视频123区在线观看| 国产一区二区免费视频| 亚洲欧洲精品天堂一级| 日本韩国精品在线| 免费看欧美美女黄的网站| 欧美成人一区二区三区在线观看| 国产精品一级二级三级| 亚洲乱码国产乱码精品精可以看| 欧美日韩中文字幕一区二区| 日本亚洲三级在线| 久久久99精品久久| 在线免费观看日本欧美| 午夜精品久久久久影视| www精品美女久久久tv| 色婷婷国产精品久久包臀| 青青青伊人色综合久久| 国产精品日韩成人| 欧美美女视频在线观看| 国产成人一区二区精品非洲| 亚洲日本va午夜在线影院| 久久综合久色欧美综合狠狠| 99精品国产一区二区三区不卡| 五月婷婷欧美视频| 欧美韩国日本一区| 欧美视频精品在线观看| 国产精品18久久久久久久久| 成人欧美一区二区三区白人| 久久久久久久综合狠狠综合| 色婷婷久久综合| 国产精品66部| 免费在线观看成人| 国产精品久久久久影视| 日韩午夜激情电影| 日本精品免费观看高清观看| 国产精品一区在线| 日韩av电影免费观看高清完整版| 国产欧美精品一区二区色综合朱莉 | 欧洲视频一区二区| jvid福利写真一区二区三区| 水野朝阳av一区二区三区| 精品久久久久av影院| 欧美日韩国产另类不卡| 99久久免费精品高清特色大片| 精品一区二区三区影院在线午夜 | 在线观看网站黄不卡| 成人美女视频在线观看18| 日本不卡视频一二三区| 亚洲人午夜精品天堂一二香蕉| 国产精品久久久久久久午夜片| 日韩精品中文字幕一区 | 国产一区二区免费看| 性欧美疯狂xxxxbbbb| 亚洲男人天堂av| 一区免费观看视频| 日韩理论片网站| 日韩欧美区一区二| 国产亚洲欧洲一区高清在线观看| 国产片一区二区三区| 91精品国产91久久综合桃花| 69堂国产成人免费视频| 欧美日韩国产影片| 91麻豆视频网站| 欧美精品一二三| 91精品国产免费久久综合| 在线成人小视频| 日韩欧美国产综合一区| 欧美xxx久久| 日韩美女主播在线视频一区二区三区| 精品久久久久久亚洲综合网| 久久久综合精品| 久久久精品欧美丰满| 精品日韩欧美在线| 久久综合给合久久狠狠狠97色69| 国产精品视频在线看| 国产精品国产三级国产有无不卡 | 国产99一区视频免费| 国产成人丝袜美腿| 91看片淫黄大片一级| 日本韩国欧美一区| 精品久久久影院| 自拍偷自拍亚洲精品播放| 亚洲国产精品一区二区久久| 蜜桃一区二区三区四区| 国产自产高清不卡|