ধারণা
একটি প্রদত্ত অ্যারের অ্যারে এন-এর আকারের সাথে, আরেকটি কী X এবং একটি সেগমেন্টের আকার K এর ক্ষেত্রে, কাজটি হল নির্ধারণ করা যে কী Xটি arr1[]-এ K আকারের প্রতিটি বিভাগে উপস্থিত রয়েছে।
ইনপুট
arr1[] = { 4, 6, 3, 5, 10, 4, 2, 8, 4, 12, 13, 4} X = 4 K = 3
আউটপুট
Yes
অ্যারে, {4, 6, 3}, {5, 10, 4}, {2, 8, 4} এবং {12, 13, 4} আকারে K আকারের 4টি অ-ওভারল্যাপিং সেগমেন্টের অস্তিত্ব রয়েছে৷ 4 সমস্ত বিভাগ উপস্থিত।
ইনপুট
arr1[] = { 22, 24, 57, 66, 35, 55, 77, 33, 24, 46, 22, 24, 26} X = 24 K = 5
আউটপুট
Yes
ইনপুট
arr1[] = { 6, 9, 8, 13, 15, 4, 10} X = 9 K = 2
আউটপুট
No
পদ্ধতি
এই ক্ষেত্রে, ধারণাটি সহজ, আমরা K আকারের প্রতিটি সেগমেন্ট বিবেচনা করি এবং উইন্ডোতে X উপস্থিত আছে কিনা তা যাচাই করি। তাই আমাদের সাবধানে শেষ সেগমেন্টটি মোকাবেলা করতে হবে।
উদাহরণ
নিম্নলিখিত পদ্ধতির বাস্তবায়ন হল -
// C++ code to determine the every segment size of // array have a search key x #include <bits/stdc++.h> using namespace std; bool findxinkindowSize1(int arr1[], int X, int K, int N){ int i; for (i = 0; i < N; i = i + K) { // Search X in segment starting // from index i. int j; for (j = 0; j < K; j++) if (arr1[i + j] == X) break; // If loop didn't break if (j == K) return false; } // If N is a multiple of K if (i == N) return true; // Check in last segment if N // is not multiple of K. int j; for (j=i-K; j<N; j++) if (arr1[j] == X) break; if (j == N) return false; return true; } // main driver int main(){ int arr1[] = { 4, 6, 3, 5, 10, 4, 2, 8, 4, 12, 13, 4 }; int X = 4, K = 3; int N = sizeof(arr1) / sizeof(arr1[0]); if (findxinkindowSize1(arr1, X, K, N)) cout << "Yes" << endl; else cout << "No" << endl; return 0; }
আউটপুট
Yes