
Data Structure
Networking
RDBMS
Operating System
Java
MS Excel
iOS
HTML
CSS
Android
Python
C Programming
C++
C#
MongoDB
MySQL
Javascript
PHP
- Selected Reading
- UPSC IAS Exams Notes
- Developer's Best Practices
- Questions and Answers
- Effective Resume Writing
- HR Interview Questions
- Computer Glossary
- Who is Who
Minimum Number of Sets with Numbers Less than Y in C++
Problem statement
Given a string of consecutive digits and a number Y, the task is to find the number of minimum sets such that every set follows the below rule −
- Set should contain consecutive numbers
- No digit can be used more than once.
- The number in the set should not be more than Y.
Example
If str = “1234” and Y = 20 then answer is 3 as below sets are created −
{12} {3} and {4}
Algorithm
- Convert string to number
- If the number is not greater than Y, then mark f = 1
- If the number exceeds Y, then increase count if f = 1 and re-initialize f as 0 and also initialise num as s[i]-‘0’ or num as 0
- After iterating in the string completely, then increase count if f is 1
Example
#include <iostream> #include <string> using namespace std; int getMinSets(string str, int y) { int cnt = 0; int num = 0; int l = str.length(); int f = 0; for (int i = 0; i < l; ++i) { num = num * 10 + str[i] - 48; if (num <= y) { f = 1; continue; } if (f) { ++cnt; } num = str[i] - '0'; f = 0; if (num <= y) { f = 1; } else { num = 0; } } if (f) { ++cnt; } return cnt; } int main() { string str = "1234"; int y = 20; cout << "Minimum sets = " << getMinSets(str, y) << endl; return 0; }
Output
When you compile and execute above program. It generates following output −
Minimum sets = 3
Advertisements