1、演算法背景:
大家知道,微信拼手氣紅包和普通紅包兩種。普通紅包每個人搶到的金額是固定的(總額的平均數),拼手氣紅包是隨機金額(每個人搶到的是隨機的,差別可能非常大,有的人搶到的是1分,有的搶到的可能是幾元、十幾元、幾十元),目前的搶紅包演算法只能輸入兩個引數,即總金額、總人數。
2、演算法要求:
現要求同學們設計乙個改進的搶紅包演算法,可以設定總金額(total)、總人數(num)、搶到的最低金額(min)和最高金額(max),這樣就可以控制每個搶紅包的,搶到的不會太少,也不會太多。
(1)先用自然語言給出演算法設計的思想:
第一步:輸入紅包金額總金額,紅包個數,紅包金額最低/最高額度。
第二步:判斷帶輸入資料是否滿足演算法要求,不滿足輸出提示資訊,並重新輸入資料。
第三步:生成乙個隨時紅包金額
第四步:判斷紅包金額是否滿足條件,如果滿足,繼續生成下乙個紅包金額,如果不滿足在
此生成新的隨機紅包金額,知道滿足條件。
第五步:輸出搶紅包的過程資訊
(2)進行異常檢查與處理;
(3)給出c語言源**實現,執行結果展示;
源**如下
#include
#include
#include
void input();
int range_random_price(int start_price, int end_price);
void redpackets(double total, int num, double min_price, double max_price);
int maxx = 0, maxx_index = -1;
int main()
// 資料輸入
void i
// 生成(a, b) 之間的隨機數
int range_random_price(int start_price, int end_price)
// total :總金額(元) num:人的個數 min_price max_price :最低/最高金額
void redpackets(double total, int num, double min_price, double max_price)
printf("搶紅包結果如下:\n");
for(int i = 1; i < num; i++)
if(maxx < random_price)
maxx = random_price, maxx_index = i;
total -= random_price;// 剩餘金額
printf("第 %d 個人搶到的紅包金額為 %.2f, 紅包剩餘金額為 %.2f\n", i, (double)(random_price/100.0), (double)(total/100.0));
} if(maxx < total)
maxx = total, maxx_index = num;
// 輸出最後乙個人的紅包金額
printf("第 %d 個人搶到的紅包金額為 %.2f, 紅包剩餘金額為 0.00\n", num, (double)(total/100.0));
printf("運氣王是 %d 號\n", maxx_index);
}程式執行結果:
本文標題: c語言實現搶紅包演算法
本文位址:
如何實現搶紅包演算法?
方法一 二倍均值法 public static listdivideredpackage integer totalamount,integer totalpeoplenum amountlist.add restamount return amountlist 缺陷 除了最後一次,任何一次搶到的金...
微信搶紅包演算法實現
只討論金額隨機的情況,需要滿足規則 所有人搶到金額之和要等於紅包總金額1.每個人至少搶到一分錢1.要保證所有人搶到金額的機率相等方案一 每個人點進來領,金額隨機,隨機的上限是當前剩餘的紅包金額。每次搶到的金額 隨機區間 0,剩餘紅包金額 分析 這樣做的缺陷是越早領越有優勢,因為每次搶到的金額 隨機區...
Accessibility 實現搶紅包 一
好了。不想說那麼多廢話了。直接開始吧 進入正題!我英語不好,將就看吧。配置許可權 註冊你的accessinilityservice 這一步沒什麼要說的,注意許可權和meta data的配置 配置accessibility info accessibilityeventtypes 監聽的事件。acce...