C++ 中小於 Y 的數字的最小集合數
問題陳述
給定一個連續數字的字串和一個數字 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
廣告
資料結構
網路
關係資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP