php兑现装箱算法

Jun 13, 2016 am 10:40 AM
box count index items

php实现装箱算法

贪婪法是一种不追求最优解,只希望得到较为满意解的方法。贪婪法一般可以快速得到满意的解,因为它省去了为找最优解要穷尽所有可能而必须耗费的大量时间。贪婪法常以当前情况为基础作最优选择,而不考虑各种可能的整体情况,所以贪婪法不要回溯。
? ? 例如平时购物找钱时,为使找回的零钱的硬币数最少,不考虑找零钱的所有各种发表方案,而是从最大面值的币种开始,按递减的顺序考虑各币种,先尽量用大面值的币种,当不足大面值币种的金额时才去考虑下一种较小面值的币种。这就是在使用贪婪法。这种方法在这里总是最优,是因为银行对其发行的硬币种类和硬币面值的巧妙安排。如只有面值分别为1、5和11单位的硬币,而希望找回总额为15单位的硬币。按贪婪算法,应找1个11单位面值的硬币和4个1单位面值的硬币,共找回5个硬币。但最优的解应是3个5单位面值的硬币。
【问题】 装箱问题
? ? 问题描述:装箱问题可简述如下:设有编号为0、1、…、n-1的n种物品,体积分别为v0、v1、…、vn-1。将这n种物品装到容量都为V的若干箱子里。约定这n种物品的体积均不超过V,即对于0≤i<n,有0<vi≤V。不同的装箱方案所需要的箱子数目可能不同。装箱问题要求使装尽这n种物品的箱子数要少。
? ? 若考察将n种物品的集合分划成n个或小于n个物品的所有子集,最优解就可以找到。但所有可能划分的总数太大。对适当大的n,找出所有可能的划分要花费的时间是无法承受的。为此,对装箱问题采用非常简单的近似算法,即贪婪法。该算法依次将物品放到它第一个能放进去的箱子中,该算法虽不能保证找到最优解,但还是能找到非常好的解。不失一般性,设n件物品的体积是按从大到小排好序的,即有v0≥v1≥…≥vn-1。如不满足上述要求,只要先对这n件物品按它们的体积从大到小排序,然后按排序结果对物品重新编号即可。装箱算法简单描述如下:
{ 输入箱子的容积;
输入物品种数n;
按体积从大到小顺序,输入各物品的体积;
预置已用箱子链为空;
预置已用箱子计数器box_count为0;
for (i=0;i{ 从已用的第一只箱子开始顺序寻找能放入物品i 的箱子j;
if (已用箱子都不能再放物品i)
{ 另用一个箱子,并将物品i放入该箱子;
box_count++;
}
else
将物品i放入箱子j;
}
}
上述算法能求出需要的箱子数box_count,并能求出各箱子所装物品。下面的例子说明该算法不一定能找到最优解,设有6种物品,它们的体积分别为:60、45、35、20、20和20单位体积,箱子的容积为100个单位体积。按上述算法计算,需三只箱子,各箱子所装物品分别为:第一只箱子装物品1、3;第二只箱子装物品2、4、5;第三只箱子装物品6。而最优解为两只箱子,分别装物品1、4、5和2、3、6。
若每只箱子所装物品用链表来表示,链表首结点指针存于一个结构中,结构记录尚剩余的空间量和该箱子所装物品链表的首指针。另将全部箱子的信息也构成链表。以下是按以上算法编写的程序。
}

附php示例:

<?php//物品$items[0] = 60;$items[1] = 45;$items[2] = 35;$items[3] = 20;$items[4] = 20;$items[5] = 20;$box_volume_count = 100; //每个盒 子的最大容积$box_count = 0; //共用盒子总数$item_count = count( $items );$box = array();//盒 子数组for ( $itemindex = 0; $itemindex < $item_count; $itemindex++ ) {$_box_index = false;$_box_count = count( $box );for ( $box_index = 0; $box_index < $_box_count; $box_index++ ) {  if ( $box[$box_index]['volume'] + $items[$itemindex] <= $box_volume_count ) {  $_box_index = $box_index;  break;  }}if ( $_box_index === false ) {  $box[$_box_count]['volume'] = $items[$itemindex];  $box[$_box_count]['items'][] = $itemindex;  $box_count++;} else {  $box[$_box_index]['volume'] += $items[$itemindex];  $box[$_box_index]['items'][] = $itemindex;}}print_r( $box );?>
Copier après la connexion

?

?

来自:http://home.51.com/chenjiuchuan/diary/item/10049598.html

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
2 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Repo: Comment relancer ses coéquipiers
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Quel fichier est index.html ? Quel fichier est index.html ? Feb 19, 2024 pm 01:36 PM

index.html représente le fichier de la page d'accueil de la page Web et est la page par défaut du site Web. Lorsqu'un utilisateur visite un site Web, la page index.html est généralement chargée en premier. HTML (HypertextMarkupLanguage) est un langage de balisage utilisé pour créer des pages Web, et index.html est également un fichier HTML. Il contient la structure et le contenu d'une page Web, ainsi que les balises et les éléments utilisés pour le formatage et la mise en page. Voici un exemple de code index.html : &lt

La différence entre counta et count La différence entre counta et count Nov 20, 2023 am 10:01 AM

La fonction Count est utilisée pour compter le nombre de nombres dans une plage spécifiée. Elle ignore le texte, les valeurs logiques et les valeurs nulles, mais compte les cellules vides. La fonction Count ne compte que le nombre de cellules contenant des nombres réels. La fonction CountA est utilisée pour compter le nombre de cellules non vides dans une plage spécifiée. Il compte non seulement les cellules contenant des nombres réels, mais également le nombre de cellules non vides contenant du texte, des valeurs logiques et des formules.

Fournir un poste de travail de développeur puissant dans le cloud : Microsoft Dev Box Fournir un poste de travail de développeur puissant dans le cloud : Microsoft Dev Box May 08, 2023 am 08:19 AM

À l'ère actuelle du travail hybride, il est devenu extrêmement important de disposer de postes de travail dans le cloud pour garantir un flux de travail ininterrompu. Alors que Microsoft tentait de résoudre ce problème avec Windows 365, il a annoncé aujourd'hui une solution dédiée appelée Microsoft DevBox. En bref, DevBox fournira de puissants postes de travail de développement hébergés sur le cloud. Il s'intégrera également à l'environnement de déploiement Azure afin que vous puissiez utiliser vos modèles de projet existants pour être opérationnel en un rien de temps. La motivation derrière cette solution est de réduire les maux de tête des administrateurs informatiques en matière d’intégration des ressources, d’approvisionnement en matériel, de conformité et de sécurité. DevBox est essentiellement Windows365, Intun

Comment utiliser les éléments en python Comment utiliser les éléments en python Nov 28, 2023 am 11:29 AM

En Python, la méthode items() est généralement utilisée sur les objets du dictionnaire pour renvoyer toutes les paires clé-valeur du dictionnaire. Il s'agit d'une méthode membre d'un dictionnaire, vous ne pouvez donc pas l'utiliser directement sur un objet à moins que cet objet ne soit un dictionnaire.

qu'est-ce que l'index MySQL qu'est-ce que l'index MySQL Oct 08, 2023 am 11:47 AM

L'index dans MySQL signifie index. C'est une structure de données utilisée pour accélérer l'interrogation des tables de base de données. L'index peut être comparé au catalogue d'un livre. Il stocke les valeurs de colonnes spécifiques dans la table. positions de ligne correspondantes, ce qui rend la base de données plus efficace. Localisez et accédez rapidement aux données. La fonction de l'index est d'améliorer l'efficacité des requêtes. Sans index, la base de données doit analyser l'intégralité de la table ligne par ligne pour trouver les données correspondantes. Dans les grandes tables, cette méthode peut prendre beaucoup de temps. Les lignes de données requises sont rapidement localisées dans l'ordre, ce qui améliore considérablement la vitesse des requêtes.

Résumé des différences d'utilisation de la fonction MySQL Count Résumé des différences d'utilisation de la fonction MySQL Count Nov 29, 2022 pm 04:47 PM

Cet article vous présente les différences d'utilisation de la fonction Count de MySQL. Le besoin de données statistiques est très facile à rencontrer dans notre développement quotidien. MySQL prend également en charge une variété de fonctions de calcul. Examinons ensuite les différences entre elles. et s'ils ont des pièges.

Quelle est l'utilisation de la fonction count en php Quelle est l'utilisation de la fonction count en php Sep 09, 2021 pm 05:08 PM

L'utilisation de la fonction count en PHP est : [count(array,mode);], où le paramètre array spécifie le tableau à compter et le paramètre mode spécifie le mode de la fonction.

Problème d'exécution du code source PHP : solution d'erreur d'index Problème d'exécution du code source PHP : solution d'erreur d'index Mar 09, 2024 pm 09:24 PM

Problème d'exécution du code source PHP : la résolution des erreurs d'index nécessite des exemples de code spécifiques. PHP est un langage de script côté serveur largement utilisé pour développer des sites Web et des applications Web dynamiques. Cependant, vous rencontrerez parfois divers problèmes lors de l'exécution du code source PHP, parmi lesquels "l'erreur d'index" est une situation courante. Cet article présentera quelques causes courantes et solutions aux erreurs d'index, et fournira des exemples de code spécifiques pour aider les lecteurs à mieux gérer ces problèmes. Description du problème : lors de l'exécution d'un programme PHP

See all articles