EOJ 3126 商品推薦 (結構體 排序)

2021-10-05 18:56:04 字數 2166 閱讀 7410

現在某類顧客指定的規則是:

對於同一類商品,如果乙個商品的銷量高於所有該類商品銷量的中位數,並且**低於所有該類商品**的中位數 ,

則向他推薦,顯示商品編號,銷量和**。

如果有多個商品符合要求,推薦的順序是

按銷量從大到小排序,銷量一樣則按**從低到高排序;

如果銷量**都一樣,按輸入順序排序;

如果沒有符合要求的商品,則提示不推薦,顯示 no recommendation;

中位數定義:

一組資料按從小到大(或從大到小)的順序排列,如果資料個數 n 為奇數(即,n=2k+1),則排在中間位置(第k+1個)的數為中位數;如果資料個數為偶數(n=2k),則取最中間兩個資料的平均值為中位數即,第k位和第k+1位兩個數的平均值為中位數。

第 1 行:乙個整數 t 為問題數。

對於每一組測試資料按如下格式輸入:

第 1 行:1 個正整數,表示商品的個數

第 2 行 ∽n+1 行:商品編號(不超過 9 個字元),銷量(非負整數,在 32 位整型表示以內)和**(非負數,在 32 位浮點型表示以內)。

資料之間用乙個空格分隔。

對於每個問題,輸出一行問題的編號(0 開始編號,格式:case #0: )

然後對應每個問題,按符合條件的商品數目,每行輸出一組商品編號,銷量和**,格式與輸入時一樣。無符合的則顯示 no recommendation

排序+篩選

用結構體儲存每個商品的編號、銷量、**

#include

#include

#include

using

namespace std;

// from 0vv

struct goods

;int

cmp_price

(const

void

*a,const

void

*b)//求**的中位數時,需要先排序

intcmp_sales

(const

void

*a,const

void

*b)//求銷量的中位數時,需要先排序

intcmp

(const

void

*a,const

void

*b)//1.銷量從大到小排序 2.**從低到高排序 3.輸入順序

intmain()

qsort

(mygoods,n,

sizeof

(mygoods[0]

),cmp_sales);if

(n%2

) mid_sales=mygoods[

(n-1)/

2].sales;

else

mid_sales=

(mygoods[

(n-2)/

2].sales+mygoods[n/2]

.sales)/2

;qsort

(mygoods,n,

sizeof

(mygoods[0]

),cmp_price);if

(n%2

) mid_price=mygoods[

(n-1)/

2].price;

else

mid_price=

(mygoods[

(n-2)/

2].price+mygoods[n/2]

.price)/2

; cout<<

"case #"

<":"

sizeof

(mygoods[0]

),cmp)

;//排好序後,篩選是否有符合的商品

int sign=0;

//記錄是否有符合條件的商品

for(

int j=

0;jif(sign==0)

cout<<

"no recommendation"

<}return0;

}

京東商品推薦系統

京東商品推薦系統 個性化推薦是根據使用者的興趣特點和購買行為,向使用者推薦使用者感興趣的資訊和商品。隨著電子商務規模的不斷擴大,商品個數和種類快速增長,顧客需要花費大量的時間才能找到自己想買的商品。這種瀏覽大量無關的資訊和產品過程無疑會使淹沒在資訊過載問題中的消費者不斷流失。為了解決這些問題,京東商...

給使用者推薦商品

根據使用者15個月商品購買記錄 2015年1月28日到2016年5月使用者購買商品記錄 下個月 2016年6月 哪些使用者最可能購買的7個商品。融合模型。模型融合演算法效果不好。商品分布跟月份相關,只使用2015年6月的測試資料來 2016年6月份的使用者購買行為。資料量大大縮小。有的使用者2015...

django 推薦商品演算法

1.基於使用者的協同過濾演算法 usercf 該演算法利用使用者之間的相似性來推薦使用者感興趣的資訊,個人通過合作的機制給予資訊相當程度的回應 如評分 並記錄下來以達到過濾的目的進而幫助別人篩選資訊,回應不一定侷限於特別感興趣的,特別不感興趣資訊的紀錄也相當重要。但有很難解決的兩個問題,乙個是稀疏性...