AIZU ONLINE JUDGE

AOJ ITP2 3_C(Count)を解く

AOJ_ITP2_3_C

Aizu Online Judge(AOJ)が提供している「プログラミング応用」(ITP2)の3_C問題をC++で解いてみました。

ITP2では、「プログラミングのための基礎ライブラリを獲得します」とあります。トピック#3では、列に対する操作を学びます。

#3から#6は、alogrithm をインクルードして利用する機能を紹介します。全てのアルゴリズムは、データ構造の実装から切り離されています。アルゴリズムの要件(主にイテレータ)を満たせば動作します。

問題(3_C: Count)

問題はリンク先をご覧ください。

AOJ ITP2 3_C問題: Count

イテレータ範囲に含まれる、指定された値と同じ値を持つ要素の数を求める count について学びます。

std::count について

以下は、cpprefjp 様の記事を参考にさせていただきました。

std::count は、指定された値 value と同じ値をもつ要素の数を返します。

  template <class InputIterator, class T>
  count(InputIterator first, InputIterator last, const T& value);

正確に、last – first 回の比較を行います。

C++ プログラム例(ITP2 3_C)

与えられた数列とクエリが与えられます。クエリは、[b, e) と比較する数字 k から成る1種類だけです。

与えられたクエリに対して、count を呼び出します。以下は、C++のプログラムです。

#include <iostream>
#include <algorithm>

#include <vector>

using namespace std;

int main()
{
	int n;
	cin >> n;
	vector<int> a(n);
	for (int i = 0; i < n; ++i) {
		cin >> a[i];
	}

	int q;
	cin >> q;
	for (int i = 0; i < q; ++i) {
		int b, e, k;
		cin >> b >> e >> k;
		cout << count(a.begin() + b, a.begin() + e, k) << endl;
	}

	return 0;
}

上記プログラムは、AOJ で「AC(Accepted=正解)」と判定されました。

最後に

count は、イテレータが対応できていれば使うことができます。また、実際に使われることが多いライブラリ関数です。紹介する機会を通じて、慣れていきたいです。

引き続き、ITP2 の問題を紹介していきます。

COMMENT

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA