装箱问题算法matlab,[MATLAB数学相关] 求一维装箱问题的 MATLAB算法

icon1.gif 回复: 求一维装箱问题的 MATLAB算法

没人回复,还是我自己来吧

用MATLAB的话,循环会比较慢,还是考虑c++

以下是我参考别人的一段代码,希望对大家有帮助,也是我们做数模时使用的代码

# include

# include

typedef struct ele

{ int vno;

struct ele *link;

} ELE;

typedef struct hnode

{ int remainder;

ELE *head;

Struct int hnode *next;

} HNODE;

void main()

{ int n, i, disk_count, disk_volume, *a;

HNODE *disk_h, *disk_t, *j;

ELE *p, *q;

Printf("输入软盘容量\n");

Scanf("%d",&disk_volume);

Printf("输入文件个数\n");

Scanf("%d",&n);

A=(int *)malloc(sizeof(int)*n);

Printf("请按文件大小从大到小顺序输入各文件的文件大小:");

For (i=0;i

Disk_h=disk_t=NULL;

Disk_count=0;

For (i=0;i

{ p=(ELE *)malloc(sizeof(ELE));

p->vno=i;

for (j=disk_h;j!=NULL;j=j->next)

if (j->remainder>=a[i]) break;

if (j==NULL)

{ j=(HNODE *)malloc(sizeof(HNODE));

j->remainder=disk_volume-a[i];

j->head=NULL;

if (disk_h==NULL) disk_h=disk_t=j;

else disk_t=boix_t->next=j;

j->next=NULL;

disk_count++;

} 4

else j->remainder-=a[i];

for (q=j->next;q!=NULL&&q->link!=NULL;q=q->link);

if (q==NULL)

{ p->link=j->head;

j->head=p;

}

else

{ p->link=NULL;

q->link=p;

}

}

printf("共使用了%d个软盘",disk_count);

printf("各软盘装文件情况如下:");

for (j=disk_h,i=1;j!=NULL;j=j->next,i++)

{ printf("第%2d个软盘,还剩余容量%4d,所装文件有;\n",I,j->remainder);

for (p=j->head;p!=NULL;p=p->link)

printf("%4d",p->vno+1);

printf("\n");

}

}

__________________

:水榭焚香听琴事,浪荡江湖不系舟:

smile.gif

感谢请点thanks

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值