इस ट्यूटोरियल में, हम एक प्रोग्राम पर चर्चा करेंगे जो लंबाई N की संख्या को इस तरह बदलता है कि इसमें कोई एक अंक कम से कम 'K' बार आए।
इसके लिए हमें दी गई लंबाई N की एक संख्या दी जाएगी। हमारा कार्य दी गई संख्या में अंकों को इस तरह बदलना है कि कोई एक अंक कम से कम 'K' बार दोहराया जाए। साथ ही, आपको इस ऑपरेशन की लागत की गणना करनी होगी जो दोनों के बीच का निरपेक्ष अंतर है और अंत में न्यूनतम लागत प्रिंट करनी होगी।
उदाहरण
#include <bits/stdc++.h>
using namespace std;
//न्यूनतम मान और अंतिम संख्या की गणना
int get_final(int n, int k, string a) {
int modtemp;
//k में बदले गए नंबरों की गिनती
int co;
string temp;
//न्यूनतम लागत स्टोर करना
pair ans = make_pair(INT_MAX, "");
for (int i = 0; i < 10; i++) {
temp = a;
//अस्थायी संशोधित संख्या स्टोर करना
modtemp = 0;
co = count(a.begin(), a.end(), i + '0');
for (int j = 1; j < 10; j++) {
if (i + j < 10) {
for (int p = 0; p < n; p++) {
if (co <= k)
break;
if (i + '0' == temp[p] - j) {
temp[p] = i + '0';
modtemp += j;
co++;
}
}
}
if (i - j >= 0) {
for (int p = n - 1; p >= 0; p--) {
if (co >= k)
break;
if (i + '0' == temp[p] + j) {
temp[p] = i + '0';
modtemp += j;
co++;
}
}
}
}
//पिछले के साथ न्यूनतम लागत बदलना
ans = min(ans, make_pair(modtemp, temp));
}
cout << ans.first << endl << ans.second << endl;
}
int main() {
int n = 5, k = 4;
string a = "21122";
get_final(n, k, a);
return 0;
}
आउटपुट
1 21222