OPT算法核心代码

编程入门 行业动态 更新时间:2024-10-08 22:12:34

OPT<a href=https://www.elefans.com/category/jswz/34/1770096.html style=算法核心代码"/>

OPT算法核心代码

int en_queue_2(QUEUE *pQ, char *str) //入队前判断队列是否已满
{
int tmp = 0,s_tmp = 0,i,j;

int rv[100],sum[100];
int m = strlen(str);
// int m = len - 1;
int k = -1;
int jude = -100;//便于之后排序定义的临时变量
int MAX = 1024;
for (i = 0; i < m ; i++)
{
rv[i] = str[i] - '0';
}
for (i = 0; i < len; i++)
{
for (j = count; j < m; j++)
{
if (pQ->pBase[i] == rv[j])
{
k = k + 1;
jude = k;
sum[k] = j - i;//记录队列中每个元素与带入队一系列匹配元素的距离
break;
}
}
if (jude != k)
{
k = k + 1;
sum[k] = MAX--;//如果队列中元素未匹配即将入队的其他元素则把记录该元素的距离置为比较大的一个数
}
jude = -100;//重新置为-100
}
count = count + 1;//全局变量加1,便于下一次移动整个页面走向
//
for (i = 0; i < len; i++)
{
for (j = i + 1; j < len; j++)
{
if (sum[i] < sum[j])//根据上述计算出来距离来对队列中元素进行降序排序
{
s_tmp = sum[i];
sum[i] = sum[j];
sum[j] = s_tmp;
tmp = pQ->pBase[i];
pQ->pBase[i] = pQ->pBase[j];
pQ->pBase[j] = tmp;
}
}
}
return 1;

}


int empty_queue(QUEUE *pQ)
{
int N = len + 1;
if (pQ->front == pQ->rear)
return 1;
else
return 0;
}


int out_queue(QUEUE *pQ, int *pVal)//出队前判断队列是否为空
{
int m = len - 1;
int i = 0;
if (empty_queue(pQ))
{
return 0;
}


*pVal = pQ->pBase[0]; //把出队的元素保存起来,此时固定每次都是出队首元素
// int m = len - 1;
for (i = 0; i < m; i++)
{
pQ->pBase[i] = pQ->pBase[i + 1];//队列中元素前移
}
return 1;
}


int in_queue(QUEUE *pQ, int val)
{
int m = pQ->rear - 1;
pQ->pBase[m] = val; //队列中元素被替换,根据主函数的判断此时m值固定
return 1;
}






更多推荐

OPT算法核心代码

本文发布于:2024-02-07 12:37:22,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1756877.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:算法   核心   代码   OPT

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!