Knapsack problem/0-1: Difference between revisions
→{{header|C#}}
Line 1,109:
Random values origin are automatically assigned create integral of quantity and quality
<lang QB64>
using System.Text; // rextester.com/EAFWD33169
namespace Knapsack
{
class Knapsack
{
static void Main()
{
int n = 7;
int Inside = 5;
int all=Convert.ToInt32(Math.Pow(2,(n+1)));
int[] mass = new int[n];
int[] cost = new int[n];
int[] jack = new int[n];
int[] quality = new int[all];
int[] amount = new int[all];
int i; // circle
int k; // circle
int dec;
string[] bin = new string[all];
int list;
int max;
int max_num;
Random rand = new Random();
for (i=0; i<n; i++)
{
mass[i]=1+rand.Next(3);
cost[i]=10+rand.Next(9);
Console.Write(
Console.Write(mass[i]);
Console.Write(" ");
Console.Write(cost[i]);
Console.WriteLine();
Console.WriteLine();
for (list = all-1; list>(all-1)/2; list--)
{
dec=list;
while (dec > 0)
{
bin[list] = dec % 2 + bin[list]; // from 10 to 2
dec/=2;
}
if (bin[list] == "")
{
bin[list] = "0";
}
bin[list]=bin[list].Substring(1,bin[list].Length-1);
for (
{
jack[k]=Convert.ToInt32(bin[list].Substring(k,1));
quality[list]=quality[list]+mass[k]*jack[k]*cost[k]; // integral of costs
amount[list]=amount[list]+mass[k]*jack[k]; // integral of mass
}
if (amount[list]<= Inside) // current mass < Knapsack
{
Console.Write(Inside);
Console.Write(" ");
Console.Write(amount[list]);
Console.Write(" ");
Console.Write(quality[list]);
Console.Write(" ");
Console.WriteLine(bin[list]);
}
}
Console.WriteLine();
max=0;
max_num=1;
for (i=0; i<all; i++)
{
if (amount[i]<=Inside && quality[i]>max)
{
max = quality[i]; max_num =i ;
}
}
Console.Write(
Console.
Console.Write(" ");
Console.WriteLine (bin[max_num]);
}
}
}</lang>
{{out}}
|