2003年2月
質問リンク
コードの説明
ピッチャーを練習するために代表的な基準で概念を再確立した.
2つのポインタ(左、右)、int cnt(部分集計カウント用)、int sum(部分集計用)を使用します.
条件文として考えなければならないのは
-> 1. 現在の部分とターゲット値またはright==要素より大きい個数の場合、leftを++に設定します.
-> 2. またはright++
-> 3. 現在の部分とターゲット値が等しい場合、結果count++
すなわち,無条件に左と右を増やす過程で,部分の和がちょうど目標値である場合のcountを算出する.
また,while文におけるif文の順序も考慮する.
ソースコード
#include<iostream>
#include<queue>
#include<vector>
using namespace std;
int N, M;
vector<int> a;
int main() {
cin >> N >> M;
for (int i = 0; i < N; i++) {
int abc;
cin >> abc;
a.push_back(abc);
}
int left = 0;
int right = 0;
int sum = 0;
int cnt = 0;
while (1) {
if (sum >= M) {
sum -= a[left++];
}
else if (right == N) {
break;
}
else {
sum += a[right++];
}
if (sum == M) cnt++;
}
cout << cnt;
return 0;
}
Reference
この問題について(2003年2月), 我々は、より多くの情報をここで見つけました https://velog.io/@trevor522/2003-수들의합2テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol