110,571
社区成员
发帖
与我相关
我的任务
分享
//定义种类
static int Num = 5;//种类
//初始数据
private List<Fruit> GetList()
{
List<Fruit> list = new List<Fruit>();
string[,] Data = this.LoadData();
for (int i = 0; i < Num; i++)
{
Fruit model = new Fruit();
model.Code = int.Parse(Data[i, 0].ToString());
model.Name = Data[i, 1].ToString();
model.Weight = int.Parse(Data[i, 2].ToString());
model.Price = float.Parse(Data[i, 3].ToString());
list.Add(model);
}
return list;
}
private string[,] LoadData()
{
string[,] Data = new string[Num, 4];
Data[0, 0] = "0";
Data[0, 1] = "A";
Data[0, 2] = "4";
Data[0, 3] = "4500";
Data[1, 0] = "1";
Data[1, 1] = "B";
Data[1, 2] = "5";
Data[1, 3] = "5700";
Data[2, 0] = "2";
Data[2, 1] = "C";
Data[2, 2] = "2";
Data[2, 3] = "2250";
Data[3, 0] = "3";
Data[3, 1] = "D";
Data[3, 2] = "1";
Data[3, 3] = "1100";
Data[4, 0] = "4";
Data[4, 1] = "E";
Data[4, 2] = "6";
Data[4, 3] = "6700";
return Data;
}
//背包算法
private int[] GetKnapsack(List<Fruit> list)
{
int max = 10; //可以容纳的最大重量
int[] value = new int[max + 1];
int[] item = new int[max + 1];
for (int i = 0; i < Num; i++)
{
for (int j = list[i].Weight; j < max + 1; j++)
{
int p = j - list[i].Weight;
int newValue = (int)list[i].Price + value[p];
if (newValue > value[j])
{
value[j] = newValue;
item[j] = i;
}
}
}
return value;
}
}
public class Fruit
{
public int Code;
public string Name;
public int Weight;
public float Price;
}
using System;
namespace CSharpTest
{
class Program
{
public static void Main()
{
int[] items = new int[] { 108, 118, 128, 158, 188, 208, 308 };
int sum = 1268;
int[] package = new int[sum + 1];
for (int i = 1; i <= sum; i++)
package[i] = -1;
for (int i = 0; i < items.Length; i++)
{
for (int j = 0; j <= sum - items[i]; j++)
{
if (package[j] != -1 && package[j + items[i]] == -1)
package[j + items[i]] = j;
}
}
if (package[sum] != -1)
{
int current = sum;
while (current != 0)
{
int result = current - package[current];
current = package[current];
Console.Write("{0} ", result);
}
}
else
Console.WriteLine("无解");
Console.ReadKey();
}
}
}
using System;
namespace CSharpTest
{
class Program
{
public static void Main()
{
int[] items = new int[] { 108, 118, 128, 158, 188, 208, 308 };
int sum = 1260;
int[] package = new int[sum + 1];
for (int i = 1; i <= sum; i++)
package[i] = -1;
for (int i = 0; i < items.Length; i++)
{
for (int j = 0; j <= sum - items[i]; j++)
{
if (package[j] != -1 && package[j + items[i]] == -1)
package[j + items[i]] = j;
}
}
for (int i = sum; i > 0; i--)
{
if (package[i] != -1)
{
int current = i;
while (current != 0)
{
int result = current - package[current];
current = package[current];
Console.Write("{0} ", result);
}
break;
}
}
Console.ReadKey();
}
}
}