線形探索法の基本問題!
問題概要
を並び替えてできる順列 が与えられる。
整数 が与えられるので、 を満たす を求めよ。
考えたこと
まず順列 は、サイズ の vector<int>
型の変数 P
として受け取ろう(C++)。このとき、 はそれぞれ P[0]
, P[1]
, ..., P[N-1]
となることに注意しよう。配列は通常 0 始まりなので、添字がずれるのだ。
そして、for
文を用いて、
P[i] = X
となるような i
を見つけて、その値を他の変数(たとえば res
)に保存しておこう。
最後に、res + 1
の値を答えればよい(1 を足すのは 0 始まりである部分を補正するため)。
コード
#include <bits/stdc++.h> using namespace std; int main() { int N, X; cin >> N >> X; vector<int> P(N); for (int i = 0; i < N; ++i) cin >> P[i]; int res; for (int i = 0; i < N; ++i) { if (P[i] == X) res = i; } cout << res + 1 << endl; }