codepad
[
create a new paste
]
login
|
about
Language:
C
C++
D
Haskell
Lua
OCaml
PHP
Perl
Plain Text
Python
Ruby
Scheme
Tcl
#ifndef Strategy_h #define Strategy_h #include <vector> #include <map> #include <string> #include <iostream> /// Add Code Here --> #include <algorithm> /// <-- Add Code Here using namespace std; int relate[11000][11000]; /// user to item tabel RecomdList At most K Proposed Items user size item size void Algorithm(vector<vector<double>> Table, vector<vector<int>> &RecomdList, const int K, const int user_size, const int item_size) { /** TABLE Index Content int User double Rating int Item Format Table[User][Item]=Rating STRUCTURE Table | User1 | --- Item1 Item2 Item4 ... | R1 R2 R3 | | User2 | --- Item2 Item5 Item7 ... | R4 R5 R6 | | User3 | --- Item3 Item4 Item6 ... | R4 R5 R6 : : */ /** RECOMDLIST Index Content int User int Item int Idx Format Table[User][Idx]=Item STRUCTURE RecomdList | User1 | --- 0 1 2 ... K-1 | Item3 Item8 Item9 ... Item? | | User2 | --- 0 1 2 ... K-1 | Item4 Item1 Item3 ... Item? | | User3 | --- 0 1 2 ... K-1 | Item5 Item7 Item1 ... Item? : : */ /// Add Code Here --> //初始化物品間的關係 for (int i = 0; i < 11000; i++) { for (int j = 0; j < 11000; j++) { relate[i][j] = 0; } } //觀察物品間關係,並存入relate[][] for (int x = 0; x < user_size; x++) { for (int y = 0; y < item_size; y++) { if (Table[x][y] != -1) { for (int j = y+1; j < item_size; j++) { if (Table[x][j] == 1) { relate[y][j] = relate[y][j] - 4; }else if (Table[x][j] == 2) { relate[y][j] == relate[y][j] - 2; }else if (Table[x][j] == 4) { relate[y][j] == relate[y][j] + 2; }else if (Table[x][j] == 5) { relate[y][j] == relate[y][j] + 4; } } } } } //鏡射 for (int i = 0; i < 11000; i++) { for (int j = i; j < 11000; j++) { relate[11000 - j][i] = relate[i][11000 - j]; } } int i; int j; int max[11000][10]; int min[11000][10]; //找出前10名 for (int t = 0; t < 10; t++) {//依序找出1~10 for (int n = 0; n < 11000; n++) {//得過名就歸0 for (int k = 0; k < t; k++) { relate[n][max[n][k]] = 0; } } for ( i = 0; i < 11000; i++) { for ( j = 0; j < 11000; j++) { for (int k = 0; k < 11000; k++) { if (relate[i][j] > relate[i][k]) { max[i][t] = j; min[i][t] = k; } else { max[i][t] = k; min[i][t] = j; } } } } } //開始推薦 int remind[11000]; for (int i = 0; i < 11000; i++) { remind[i] = 0; } for (int i = 0; i < user_size; i++) { int c = 0; while (c != 10) { for (int j = 0; j < item_size; j++) { if (Table[i][j] != -1) { remind[j] = Table[i][j]; if (remind[j] < 3) { RecomdList[i][c] = max[j][c]; c++; if (c == 10) { break; } } else { RecomdList[i][c] = max[j][c]; c++; if (c == 10) { break; } } } } } } /// <-- Add Code Here } #endif /* Strategy_h */
Private
[
?
]
Run code
Submit