मान लीजिए n संख्या में कैशियर पैसे का आदान-प्रदान कर रहे हैं। फिलहाल, i-वें कैशियर के सामने k[i] लोग हैं। अब, i-वें कैशियर की लाइन में j-वें व्यक्ति के पास m[i][j] नोट हैं। हमें ढूंढना है कि कोई अपने नोट्स कितनी जल्दी बदल सकता है। ध्यान रखें कि कैशियर एक नोट को स्कैन करने में 5 सेकंड खर्च करता है। प्रत्येक ग्राहक के सभी नोट्स स्कैन करने के बाद, वह नोट्स बदलने में 15 सेकंड लेता है।
इसलिए, यदि इनपुट है:
n = 6, k = [12, 12, 12, 12, 12, 12]
| 7 | 8 | 9 | 7 | 9 | 6 | 10 | 9 | 9 | 6 | 7 | 8 |
| 10 | 7 | 10 | 9 | 8 | 9 | 9 | 9 | 9 | 6 | 5 | 6 |
| 9 | 8 | 8 | 9 | 8 | 6 | 7 | 9 | 10 | 6 | 6 | 7 |
| 7 | 6 | 9 | 6 | 6 | 9 | 8 | 9 | 6 | 6 | 8 | 9 |
| 9 | 8 | 7 | 6 | 5 | 10 | 8 | 10 | 7 | 6 | 6 | 8 |
| 8 | 7 | 6 | 5 | 7 | 9 | 7 | 9 | 6 | 5 | 5 | 7 |
585 होगा, क्योंकि कैशियर को प्रत्येक ग्राहक के हर नोट के लिए 5 सेकंड चाहिए, इसलिए 5*m[i][j] जोड़ें। अब प्रत्येक कैशियर प्रत्येक ग्राहक के लिए 15 सेकंड लेता है, इसलिए उत्तर में 15*k[] जोड़ें। प्रत्येक कैशियर द्वारा लिए गए समय की गणना करने के बाद न्यूनतम समय उत्तर होगा। तो कैशियर m[5] न्यूनतम समय 585 लेता है।
समाधान दृष्टिकोण
इसे हल करने के लिए हम निम्न चरणों का पालन करेंगे:
n := len(k)minimum := 99999iको 0 सेn-1तक के लिए:temp := k[i] * 15jको 0 सेk[i]-1तक:temp := temp + m[i][j] * 5
- यदि
temp < minimum, तोminimum := temp
minimumलौटाएं।
उदाहरण
बेहतर समझ के लिए निम्न कार्यान्वयन देखें:
def minTimeToExchange(k, m):
n = len(k)
minimum = 99999
for i in range(n):
temp = k[i] * 15
for j in range(k[i]):
temp += m[i][j] * 5
if temp < minimum:
minimum = temp
return minimum
k = [12, 12, 12, 12, 12, 12]
m = [
[7, 8, 9, 7, 9, 6, 10, 9, 9, 6, 7, 8],
[10, 7, 10, 9, 8, 9, 9, 9, 9, 6, 5, 6],
[9, 8, 8, 9, 8, 6, 7, 9, 10, 6, 6, 7],
[7, 6, 9, 6, 6, 9, 8, 9, 6, 6, 8, 9],
[9, 8, 7, 6, 5, 10, 8, 10, 7, 6, 6, 8],
[8, 7, 6, 5, 7, 9, 7, 9, 6, 5, 5, 7]
]
print(minTimeToExchange(k, m))
इनपुट
[12, 12, 12, 12, 12, 12], [[7,8,9,7,9,6,10,9,9,6,7,8], [10,7,10,9,8,9,9,9,9,6,5,6], [9,8,8,9,8,6,7,9,10,6,6,7], [7,6,9,6,6,9,8,9,6,6,8,9], [9,8,7,6,5,10,8,10,7,6,6,8], [8,7,6,5,7,9,7,9,6,5,5,7]]
आउटपुट
585