C++で電話帳を設計する
次の操作をサポートする電話帳を設計するとします-
-
get-これは誰にも割り当てられていない番号を提供します。
-
check-これは番号が利用可能かどうかをチェックします。
-
リリース-これにより、番号がリサイクルまたはリリースされます。
イニシャライザを使用すると、最初にn個の数値を初期化できます
これを解決するには、次の手順に従います-
-
1つのセットを定義する
-
使用可能なキューを1つ定義する
-
イニシャライザはmaxNumbersを取ります。
-
N:=maxNumbers
-
初期化i:=0の場合、i
-
利用可能なものにiを挿入します
-
-
関数get()
を定義します -
使用可能なサイズが0と同じ場合、-
-
-1を返す
-
-
x:=利用可能な最初の要素
-
xをsに挿入
-
利用可能な要素を削除する
-
xを返す
-
関数check()を定義します。これには数値が必要です
-
数値>=Nまたは数値<0の場合、-
-
falseを返す
-
-
真の数を返すはsにありません
-
関数release()を定義します。これには数値が必要です
-
check(number)の場合、-
-
戻る
-
-
x:=数値
-
sからxを削除する
-
利用可能なものにxを挿入します
例
理解を深めるために、次の実装を見てみましょう-
#include <bits/stdc++.h>
using namespace std;
class PhoneDirectory {
public:
set<int< s;
queue<int< available;
int N;
PhoneDirectory(int maxNumbers){
N = maxNumbers;
for (int i = 0; i < N; i++) {
available.push(i);
}
}
int get(){
if (available.size() == 0)
return -1;
int x = available.front();
s.insert(x);
available.pop();
return x;
}
bool check(int number){
if (number >= N || number < 0)
return false;
return s.find(number) == s.end();
}
void release(int number){
if (check(number))
return;
int x = number;
s.erase(x);
available.push(x);
}
};
main(){
PhoneDirectory ob(3);
cout << (ob.get()) << endl;
cout << (ob.get()) << endl;
cout << (ob.check(2)) << endl;
cout << (ob.get()) << endl;
cout << (ob.check(2)) << endl;
ob.release(2);
cout << (ob.check(2)) << endl;
} 入力
ob.get(); ob.get(); ob.check(2); ob.get(); ob.check(2); ob.release(2); ob.check(2);
出力
0 1 1 2 0 1
-
C++での質素な数
この問題では、正の整数Nが与えられます。私たちのタスクは、与えられた数が質素な数であるかどうかをチェックするプログラムを作成することです。 不正な番号 −指定された数の素因数分解の桁数よりも厳密に桁数が多い数。 例 − 625、数625の素因数は5 4です。 。 625の桁数は3です。 5 4の桁数 は2です。 3は厳密に2より大きくなります。したがって、625は質素な数です。 最初のいくつかの質素な数は − 125、128、243、256、343、512、625など。 問題を理解するために例を見てみましょう Input: n = 128 Output: Frugal n
-
C++五胞体数
五胞体数は、パスカルの三角形の5番目の数として表されます。ご存知のように、これは5番目の数字です。つまり、パスカルの三角形に少なくとも5つの数字が必要です。したがって、このシリーズの最初の数字は 1 4 6 4 1から始まります。 パスカルの三角形の4行目。したがって、このチュートリアルでは、たとえば、n番目の五胞体数を見つける必要があります Input : 1 Output : 1 Input : 4 Output : 35 次の図から出力を確認できます- この問題については、可能な限り、これは一種のシリーズであるため、ソリューションでこのシリーズのパターンを見つけようと