इस ट्यूटोरियल में, हम कई लंबाई N को परिवर्तित करने के लिए एक प्रोग्राम पर चर्चा करेंगे, जिसमें कम से कम 'K' बार कोई एक अंक हो।
इसके लिए हमें दी गई लंबाई N की संख्या प्रदान की जाएगी। हमारा कार्य दी गई संख्या में अंकों को इस प्रकार परिवर्तित करना है कि कोई एक अंक कम से कम 'K' बार दोहराया जाए। साथ ही, आपको इस ऑपरेशन की लागत की गणना करनी होगी जो दोनों के बीच पूर्ण अंतर है और अंत में न्यूनतम लागत प्रिंट करें।
उदाहरण
#include <bits/stdc++.h>
using namespace std;
//calculating the minimum value and final number
int get_final(int n, int k, string a){
int modtemp;
//count of numbers changed to k
int co;
string temp;
//storing the minimum cost
pair<int, string> ans = make_pair(INT_MAX, "");
for (int i = 0; i < 10; i++) {
temp = a;
//storing the temporary modified number
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++;
}
}
}
}
//replacing the minimum cost with the previous one
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