मान लीजिए कि हमारे पास एक सरणी ऑर्डर है, जो ग्राहकों द्वारा एक रेस्तरां में किए गए ऑर्डर का प्रतिनिधित्व करता है। तो, ऑर्डर [i] =[cust_namei, table_numi, food_itemi] जहां cust_namei ग्राहक का नाम है, table_numi ग्राहक तालिका संख्या है, और food_itemi आइटम ग्राहक ऑर्डर है।
हमें रेस्टोरेंट का “डिस्प्ले टेबल” वापस करना होगा। यहां "डिस्प्ले टेबल" एक टेबल है जिसकी पंक्ति प्रविष्टियां दर्शाती हैं कि प्रत्येक टेबल में प्रत्येक खाद्य पदार्थ में से कितने ऑर्डर किए गए हैं। पहला कॉलम टेबल नंबर होगा और शेष कॉलम वर्णानुक्रम में प्रत्येक खाद्य पदार्थ के अनुरूप होंगे। पहली पंक्ति में एक हेडर होना चाहिए जिसका पहला कॉलम "टेबल" हो, उसके बाद खाद्य पदार्थों के नाम हों।
तो, अगर इनपुट ऑर्डर की तरह है =[["अमल", "3", "पराठा"], ["बिमल", "10", "बिरनी"], ["अमल", "3", "फ्राइड चिकन "], ["रकतिम", "5", "पानी"], ["रक्तिम", "5", "पराठा"], ["दीपक", "3", "पराठा"]], तो आउटपुट होगा [["टेबल", "बिरनी", "फ्राइड चिकन", "पराठा", "पानी"], ["3", "0", "1", "2", "0"], ["5 ","0", "0", "1", "1"], ["10", "1", "0", "0", "0"]]
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
-
एक नक्शा परिभाषित करें मी
-
एक सेट नाम परिभाषित करें
-
एक सेट टी परिभाषित करें
-
प्रत्येक तत्व के लिए यह क्रम सूची में है
-
इसे [1] टी में डालें
-
ठीक :=सच
-
अगर ठीक गलत है, तो -
-
v =एक सरणी को विभाजित करने के बाद [2] रिक्त स्थान का उपयोग करके
-
v में प्रत्येक तत्व x के लिए, करें
-
(एम [इसे [1], x] 1 से बढ़ाएँ)
-
नामों में x डालें
-
-
-
अन्यथा
-
(एम [इसे [1], इसे [2]] 1 से बढ़ाएं)
-
इसे [2] नामों में डालें
-
-
-
एक 2डी सरणी रेट परिभाषित करें
-
एक सरणी अस्थायी परिभाषित करें और नामों से तत्व कॉपी करें
-
अस्थायी में पहले तत्व के रूप में "तालिका" डालें
-
रिट के अंत में अस्थायी डालें
-
प्रत्येक तत्व के लिए इसे t में करें
-
एक सरणी ते परिभाषित करें
-
इसे ते के अंत में डालें
-
नामों में प्रत्येक तत्व x के लिए, करें
-
ते के अंत में m[it, x] स्ट्रिंग के रूप में डालें
-
-
रिट के अंत में ते डालें
-
-
सरणी को क्रमबद्ध करें रिट
-
वापसी रिट
उदाहरण
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
#include <bits/stdc++.h> using namespace std; void print_vector(vector<vector<string> > v){ cout << "["; for(int i = 0; i<v.size(); i++){ cout << "["; for(int j = 0; j <v[i].size(); j++){ cout << v[i][j] << ", "; } cout << "],"; } cout << "]"<<endl; } typedef long long int lli; class Solution { public: vector <string> split(string& s, char delimiter){ vector <string> tokens; string token; istringstream tokenStream(s); while(getline(tokenStream, token, delimiter)){ tokens.push_back(token); } return tokens; } static bool cmp(vector <string>& a, vector <string>& b){ lli an = stol(a[0]); lli bn = stol(b[0]); return an < bn; } vector<vector<string>> displayTable(vector<vector<string>>& o) { map <string, map < string, int> >m; set <string> names; set <string> t; for(auto &it : o){ t.insert(it[1]); bool ok = true; if(!ok){ vector <string> v = split(it[2], ' '); for(auto& x : v){ m[it[1]][x]++; names.insert(x); } } else{ m[it[1]][it[2]]++; names.insert(it[2]); } } vector < vector <string> > ret; vector <string> temp(names.begin(), names.end()); temp.insert(temp.begin(), "Table"); ret.push_back(temp); for(auto& it : t){ vector <string> te; te.push_back(it); for(auto& x : names){ te.push_back(to_string(m[it][x])); } ret.push_back(te); } sort(ret.begin() + 1, ret.end(), cmp); return ret; } }; main(){ Solution ob; vector<vector<string>> v = {{"Amal","3","Paratha"},{"Bimal","10","Biryni"},{"Amal","3","Fried Chicken"},{"Raktim","5","Water"},{"Raktim","5","Paratha"},{"Deepak"," 3","Paratha"}}; print_vector(ob.displayTable(v)); }
इनपुट
{{"Amal","3","Paratha"},{"Bimal","10","Biryni"},{"Amal","3","Fried Chicken"},{"Raktim","5","Water"},{"Raktim","5","Paratha"},{"Deepak"," 3","Paratha"}}
आउटपुट
[[Table, Biryni, Fried Chicken, Paratha, Water, ],[3, 0, 1, 2, 0, ],[5, 0, 0, 1, 1, ],[10, 1, 0, 0, 0, ],]