首页 / 算法 / C语言:贪心算法之装箱问题
C语言:贪心算法之装箱问题
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了C语言:贪心算法之装箱问题,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2200字,纯文字阅读大概需要4分钟。
内容图文
![C语言:贪心算法之装箱问题](/upload/InfoBanner/zyjiaocheng/625/39a6155304374ba9bb0fcb4c33868dc1.jpg)
#include <stdio.h> #include <stdlib.h> #define N 6 #define V 100 typedef struct box // 使用 typedef 来为用户自定义的数据类型box取一个新的名字BOX { int no; int size; struct box* next; }BOX; // 使用访问结构的指针访问结构的成员 void init_list(BOX** H) // 声明了一个指向 BOX 类型指针的指针 *H为一级指针,&(*H)为一级指针的地址,即将一级指针的地址赋值给二级指针H *H = (BOX*)malloc(sizeof(BOX)); // H表示一级指针的地址,*H表示一级指针的值,**H表示普通变量的值,由于一级指针指向结构体BOX,故可以通过一级指针访问结构的成员 (*H)->no = 0; (*H)->size = 0; (*H)->next = NULL; } BOX* find_p(BOX* H, int volume, int v) { BOX* p = H->next; // 一开始,由于H->next为NULL,故p为空指针.第二轮,由于H->next不为空,故将p指针指向H->next指针指向的对象即(1,60,NULL) while(p!=NULL) { if(p->size+volume <= v) // 60+45>100,不执行 break; p = p->next; //第二轮,p=NULL } return p; } //让q指针指向H指针指向的对象,通过q指针访问H指针指向的对象的成员,由于H指针指向对象的成员也是一个BOX类型的指针,然后让H指针指向对象的成员next指向p指针指向的对象(1,60,NULL) void add_list_tail(BOX* H, BOX* p) // H,p均为一级指针,H指针指向(0,0,NULL),p指针指向(1,60,NULL) { BOX* tmp = H->next; // H->next为NULL,此时tmp为空指针 BOX* q = H; // q指针指向H指针指向的对象 while(tmp!=NULL) { q = tmp; tmp = tmp->next; } q->next = p; //q为一级指针,q->next表示结构体的成员,即一级指针指向p指针指向的对象,此时两个对象相连 } void print_list(BOX* H) { BOX* p = H->next; while(p!=NULL) { printf("%d:%d\n", p->no, p->size); p = p->next; } } int add_box(int volume[], int v) { int count = 0; int i; BOX* H = NULL; //定义一个Box型的指针,指针的值为NULL,即空指针 init_list(&H); for(i=0;i<N;i++) { BOX* p = find_p(H, volume[i], v); // 一级指针p指向结构体 if(p==NULL) { count++; p = (BOX*)malloc(sizeof(BOX)); p->no = count; // 通过一级指针给结构体成员赋值 1 p->size = volume[i]; // 60 p->next = NULL; //NULL,此时p指针指向(1,60,NULL)结构体,H指针指向(0,0,NULL) add_list_tail(H, p); //此时H指向的对象的成员next指向p指针指向的成员 } else { p->size += volume[i]; //第二轮,将两个数相加 } } print_list(H); return count; } int main(int argc, char *argv[]) { int ret; int volumes[] = {60, 45, 35, 20, 20, 20}; ret = add_box(volumes, V); printf("%d\n", ret); system("PAUSE"); return 0; }
内容总结
以上是互联网集市为您收集整理的C语言:贪心算法之装箱问题全部内容,希望文章能够帮你解决C语言:贪心算法之装箱问题所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。