假設有資料
訂單A:
煙:1200元
酒:800元
訂單B:
日用:200
零食:900
給定一個數值 n =1000
結果:
訂單A需要拆分為:
訂單A1=> 煙:1000元
訂單A2=> 煙:200元
酒:800元
訂單B需要拆分為:
訂單B1=>日用:200元
=>零食:800元
訂單B剩余的100元應轉移到訂單C進行統計,也就是每個訂單的金額必須小于或等于1000元,順序計算到最后一個訂單,則小于1000則輸出結果
想了幾天也不知道該如何做,只有這些分了,求大佬們解答一下。感激不盡!
uj5u.com熱心網友回復:
別慌,你把你的思路畫個偽代碼圖,然后講給旁邊的水杯聽,你覺得你講明白了,基本就完成80%了,接下來我相信你肯定能完成的uj5u.com熱心網友回復:
遞回也不是不行,不過這個問題只要用最簡單的for就可以了。回圈次數=訂單中所有商品除以該商品單位數量并向上取整 的最大值。uj5u.com熱心網友回復:
額,騷操作。真當工商,稅務,紀檢檢查的人傻你給我解釋一下,為啥你9成的訂單都正好等于1000把
uj5u.com熱心網友回復:
先把尾數取了,1999,2999 =999,999={999,1},{998}
剩下沒難度了
{1000,2000}={1000},{1000},{1000}
uj5u.com熱心網友回復:
public class Program{
public static void Main(string[] args)
{
var resOrder = new Order();
var listOrders = SetOrderData(5);
if (listOrders.Count != 0)
{
foreach (var item in listOrders)
{
resOrder = Fun(item);
Console.WriteLine($"最后結果:【煙:${resOrder.Cigarette},酒:{resOrder.Alcohol}】");
}
}
}
/// <summary>
/// 輸出結果
/// </summary>
/// <param name="list"></param>
/// <returns></returns>
public static Order Fun(Order order)
{
int tempC;
int tempA;
Order resOrder = new Order();
int no = 1;
if (order.Cigarette >= 1000 && order.Alcohol >= 1000)
{
for (int i = 0; i < order.Cigarette/1000; i++)
{
Console.WriteLine($"訂單{no}【煙:{1000}】");
no += 1;
}
for (int i = 0; i < order.Alcohol/1000; i++)
{
Console.WriteLine($"訂單{no}【酒:{1000}】");
no += 1;
}
tempC = order.Cigarette % 1000;
tempA = order.Alcohol % 1000;
if (tempC + tempA > 1000)
{
resOrder = new Order
{
Cigarette = tempC,
Alcohol = tempA
};
resOrder = Fun(resOrder);
}
else
{
resOrder = new Order
{
Cigarette = tempC,
Alcohol = tempA
};
}
}
else
{
int x = 1000 - order.Cigarette;
if (x < order.Alcohol)
{
tempC = 0;
tempA = order.Alcohol - x;
resOrder = new Order
{
Cigarette = tempC,
Alcohol = tempA
};
}
}
return resOrder;
}
/// <summary>
/// 隨機生成訂單資料
/// </summary>
/// <param name="count">條數</param>
/// <returns></returns>
public static List<Order> SetOrderData(int count)
{
try
{
List<Order> orders = new List<Order>();
Random ran = new Random();
for (int i = 0; i < count; i++)
{
orders.Add(new Order
{
Cigarette = ran.Next(1200, 5000),
Alcohol = ran.Next(1500, 2000)
});
}
return orders;
}
catch (Exception e)
{
string error = e.Message;
return null;
}
}
}
/// <summary>
/// 訂單
/// </summary>
public class Order
{
/// <summary>
/// 煙
/// </summary>
public int Cigarette { get; set; }
/// <summary>
/// 酒
/// </summary>
public int Alcohol { get; set; }
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/221318.html
標籤:C#
