Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

จำนวนเซตขั้นต่ำที่มีตัวเลขน้อยกว่า Y ใน C++


ข้อความโจทย์

กำหนดสตริงของตัวเลขต่อเนื่องและตัวเลข Y งานคือหาจำนวนเซตน้อยที่สุด ซึ่งทุกเซตต้องปฏิบัติตามกฎต่อไปนี้ −

  • เซตควรประกอบด้วยตัวเลขที่ต่อเนื่องกัน
  • ไม่สามารถใช้ตัวเลขซ้ำได้มากกว่าหนึ่งครั้ง
  • ตัวเลขในเซตไม่ควรมากกว่า Y

ตัวอย่าง

ถ้า str = “1234” และ Y = 20 คำตอบคือ 3 ดังเซตที่สร้างได้ −

{12} {3} และ {4}

อัลกอริทึม

  • แปลงสตริงเป็นตัวเลข
  • ถ้าตัวเลขไม่มากกว่า Y ให้ตั้ง f = 1
  • ถ้าตัวเลขเกิน Y ให้เพิ่มนับถ้า f = 1 และรีเซ็ต f เป็น 0 และเริ่มต้น num ใหม่เป็น s[i]-'0' หรือ num เป็น 0
  • หลังวนลูปผ่านสตริงหมด ให้เพิ่มนับถ้า f เป็น 1

ตัวอย่าง

#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; }

ผลลัพธ์

เมื่อคอมไพล์และรันโปรแกรมข้างต้น จะได้ผลลัพธ์ดังนี้

Minimum sets = 3