Mレンジトグル操作後のバイナリ配列?
ここで1つの問題が発生します。バイナリ配列が1つあります。 n個の要素があります。各要素は0または1のいずれかになります。最初はすべての要素が0です。次に、Mコマンドを提供します。各コマンドには、開始インデックスと終了インデックスが含まれます。したがって、command(a、b)は、コマンドが位置aの要素から位置bの要素に適用されることを示しています。このコマンドは値を切り替えます。したがって、athインデックスからbthインデックスに切り替わります。この問題は単純です。アルゴリズムをチェックしてコンセプトを取得してください。
アルゴリズム
toggleCommand(arr、a、b)
Begin for each element e from index a to b, do toggle the e and place into arr at its position. done End
例
#include <iostream> using namespace std; void toggleCommand(int arr[], int a, int b){ for(int i = a; i <= b; i++){ arr[i] ^= 1; //toggle each bit in range a to b } } void display(int arr[], int n){ for(int i = 0; i<n; i++){ cout << arr[i] << " "; } cout << endl; } int main() { int arr[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; int n = sizeof(arr)/sizeof(arr[0]); display(arr, n); toggleCommand(arr, 3, 6); toggleCommand(arr, 8, 10); toggleCommand(arr, 2, 7); display(arr, n); }
出力
0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 1 1 1 0
-
配列の積のCプログラム
n個の要素の配列arr[n]が与えられた場合、タスクはその配列のすべての要素の積を見つけることです。 7つの要素の配列arr[7]があるように、その製品は次のようになります 例 Input: arr[] = { 10, 20, 3, 4, 8 } Output: 19200 Explanation: 10 x 20 x 3 x 4 x 8 = 19200 Input: arr[] = { 1, 2, 3, 4, 3, 2, 1 } Output: 144 以下で使用されるアプローチは次のとおりです − 配列入力を取得します。 そのサイズを見つけます。 配列を反復処理し、その配列の
-
Cの配列内の範囲の積
配列、L、R、Pを入力として指定し、タスクは、モジュロの下の積を出力としてLとRの間の範囲を見つけ、それを表示することです。 図に示されているように、要素の配列と、2としての左の値であるLと2としての右の値であるRがあります。ここで、プログラムはそれらの間の範囲の積を見つける必要があります。 例 Input-: A[] = { 1, 2, 3, 4, 5, 6 } P = 29 L = 2 R = 6 Output-: 24 Input-: A[] = {1, 2, 3, 4, 5, 6}, L =