当前位置: 首页 > news >正文

安徽网站推广专业做互联网招聘的网站有哪些内容

安徽网站推广,专业做互联网招聘的网站有哪些内容,山东省建设银行网站,logo设计软件手机版超级丑数是一个正整数,并且它的质因数只包含在给定的质数列表中。超级丑数的定义类似于丑数,但可以根据特定需求改变质因数的范围。下面是如何在C语言中实现求解超级丑数的代码。 我们使用最小堆(优先队列)来高效地生成超级丑数序…

超级丑数是一个正整数,并且它的质因数只包含在给定的质数列表中。超级丑数的定义类似于丑数,但可以根据特定需求改变质因数的范围。下面是如何在C语言中实现求解超级丑数的代码。

我们使用最小堆(优先队列)来高效地生成超级丑数序列。优先队列可以帮助我们始终获得当前最小的超级丑数。

代码实现

#include <stdio.h>
#include <stdlib.h>#define MAX_HEAP_SIZE 10000typedef struct {int* data;int size;
} MinHeap;// 创建一个最小堆
MinHeap* createMinHeap() {MinHeap* heap = (MinHeap*)malloc(sizeof(MinHeap));heap->data = (int*)malloc(MAX_HEAP_SIZE * sizeof(int));heap->size = 0;return heap;
}// 向堆中插入元素
void insertMinHeap(MinHeap* heap, int value) {if (heap->size >= MAX_HEAP_SIZE) {printf("Heap overflow!\n");return;}int i = heap->size++;while (i > 0 && heap->data[(i - 1) / 2] > value) {heap->data[i] = heap->data[(i - 1) / 2];i = (i - 1) / 2;}heap->data[i] = value;
}// 删除堆顶元素
int extractMin(MinHeap* heap) {if (heap->size <= 0) {printf("Heap underflow!\n");return -1;}int minValue = heap->data[0];heap->data[0] = heap->data[--heap->size];int i = 0;while (i * 2 + 1 < heap->size) {int j = i * 2 + 1;if (j + 1 < heap->size && heap->data[j + 1] < heap->data[j]) {j++;}if (heap->data[i] <= heap->data[j]) {break;}int temp = heap->data[i];heap->data[i] = heap->data[j];heap->data[j] = temp;i = j;}return minValue;
}// 检查堆中是否包含某个元素
int contains(MinHeap* heap, int value) {for (int i = 0; i < heap->size; i++) {if (heap->data[i] == value) {return 1;}}return 0;
}// 找到第n个超级丑数
int nthSuperUglyNumber(int n, int* primes, int primesSize) {MinHeap* heap = createMinHeap();insertMinHeap(heap, 1);int superUgly = 1;for (int i = 0; i < n; i++) {superUgly = extractMin(heap);for (int j = 0; j < primesSize; j++) {int newUgly = superUgly * primes[j];if (!contains(heap, newUgly)) {insertMinHeap(heap, newUgly);}}}free(heap->data);free(heap);return superUgly;
}int main() {int primes[] = {2, 3, 5};int primesSize = sizeof(primes) / sizeof(primes[0]);int n = 10; // 找到第10个超级丑数int result = nthSuperUglyNumber(n, primes, primesSize);printf("The %d-th super ugly number is: %d\n", n, result);return 0;
}

代码解释

  1. 堆数据结构

    • MinHeap结构体定义了最小堆的数据结构,包括一个动态数组和堆的大小。
    • createMinHeap函数创建并初始化最小堆。
    • insertMinHeap函数插入新元素到最小堆,同时维护堆的性质。
    • extractMin函数从最小堆中提取最小元素,并重新调整堆。
    • contains函数检查堆中是否包含某个元素,防止插入重复元素。
  2. 超级丑数计算

    • nthSuperUglyNumber函数接受要查找的超级丑数的位置n,质因数数组primes及其大小primesSize
    • 函数使用最小堆来依次生成超级丑数。每次从堆中取出最小的超级丑数,然后将其乘以所有质因数生成新的超级丑数并插入堆中。
    • 循环执行上述步骤直到找到第n个超级丑数。
  3. 主函数

    • main函数中定义了质因数数组primes,并调用nthSuperUglyNumber函数找到第n个超级丑数并输出结果。

通过这种方式,我们能够高效地找到指定位置的超级丑数。该算法利用最小堆的数据结构,确保每次都能获得当前最小的超级丑数,并避免生成重复的超级丑数。

http://www.15wanjia.com/news/186883.html

相关文章:

  • 免费足网站华强北附近网站建设
  • 网站做聚合页面方案如何写跨境建站平台
  • 网站模板炫酷wordpress 好吗知乎
  • 班级网站怎么做ppt广告公司起名用字大全
  • 郑州做网站擎天天津百度推广代理商
  • 团购汽车最便宜的网站建设施工企业机械承包责任制度
  • 网站排名易下拉效率c2c电商网站有哪些
  • 网站推广的途径和要点下载免费软件哪个网站好
  • 苏州做网站0512jinyan电脑什么软件可以做动漫视频网站
  • 移动端网站开发最好的环境营销型网站设计案例
  • 建设一个网站的流程网站制作公司承担
  • 滑县网站建设九江网站建设多少钱
  • 网站建设有哪些公司好校园网站建设的背景
  • 大连建设银行网站怎么搭建免费网站
  • 数码产品网站建设vi设计手册案例
  • 网站设计公司(信科网络)南京溧水城市建设集团网站
  • 四川省住房和城镇建设官方网站上海建设网站公
  • 山西建设注册中心网站互联网站建设维护需要做什么
  • 做h5的网站哪个好编辑网站的软件
  • 深圳网站设计公司如何哪里做外贸网站
  • 做网站的报价方案工厂订单外发代加工外发加工网
  • 学网站建设与管理好吗手机网站404页面模板
  • 网站模板 收费做流量网站挂广告还能挣钱吗
  • 贵港网站建设动态网站公司谁跟客户客户沟通
  • 网站开发技术知识在谷歌上做国际网站
  • seo优化推广教程seo是什么的简称
  • 浙江网站建设情况分析哈尔滨网站建设效果好
  • 建设网站的可以做电算化的网站
  • 外国做动漫图片的网站叫什么名字如何与知名网站做友情链接
  • 重庆可视化网站制作中国建设积分商城网站