Heim  >  Artikel  >  Backend-Entwicklung  >  Zählen Sie in der Sprache C die Anzahl der Einsen im Array nach N Bewegungen

Zählen Sie in der Sprache C die Anzahl der Einsen im Array nach N Bewegungen

WBOY
WBOYnach vorne
2023-09-11 16:25:021194Durchsuche

Zählen Sie in der Sprache C die Anzahl der Einsen im Array nach N Bewegungen

Gegeben ist ein Array der Größe N. Das Array besteht zunächst nur aus Nullen. Die Aufgabe besteht darin, zu zählen. Die Anzahl der Einsen im Array nach N Bewegungen. Jedem N-ten Schritt ist eine Regel zugeordnet. Die Regeln lauten:

  • Erster Zug – Element wechseln

  • an Position 1, 2, 3, 4…………
  • Zweiter Zug – Position 2, 4, 6, 8 ändern……… ….

  • Der dritte Zug – ändern Sie die Elemente an den Positionen 3 und 6, 9, 12……….

Zählen Sie die Anzahl der Einsen im letzten Array.

Wir verstehen durch Beispiele.

>

Eingabe

Arr[]={ 0,0,0,0 } N=4

Ausgabe

Number of 1s in the array after N moves − 2

Erläuterung - Array nach nachfolgender Bewegung -

Move 1: { 1,1,1,1 }
Move 2: { 1,0,1,0 }
Move 3: { 1,0,0,3 }
Move 4: { 1,0,0,1 }
Number of ones in the final array is 2.

Eingabe.

Arr[]={ 0,0,0,0,0,0} N=6

Ausgabe

Number of 1s in the array after N moves − 2

Erläuterung - Anordnung nach nachfolgenden Zügen -

Move 1: { 1,1,1,1,1,1,1 }
Move 2: { 1,0,1,0,1,0,1 }
Move 3: { 1,0,0,1,0,0,1 }
Move 4: { 1,0,0,0,1,0,0 }
Move 5: { 1,0,0,0,0,1,0 }
Move 4: { 1,0,0,0,0,0,1 }
Number of ones in the final array is 2.

Die im folgenden Programm verwendete Methode ist wie folgt:

  • Wir verwenden ein Ganzzahl-Array Arr[], initialisiert mit 0 und einer Ganzzahl N.

  • Die Funktion Onecount nimmt ein Arr[] und seine Größe N als Eingabe und gibt Nr. zurück. Die Zahl im letzten Array nach N Bewegungen.

  • Die for-Schleife beginnt bei 1 und geht bis zum Ende des Arrays.

  • Jedes i repräsentiert den i-ten Schritt.

  • Die verschachtelte for-Schleife beginnt beim 0. Index und geht bis zum Ende des Arrays.

  • Wenn für jeden i-ten Zug der Index j ein Vielfaches von i ist (j%i==0), ersetzen Sie 0 an dieser Position durch 1.

  • Setzen Sie diesen Vorgang für jedes i bis zum Ende des Arrays fort.

  • Hinweis – Die Indizierung beginnt bei i=1,j=1, die Array-Indizierung geht jedoch von 0 bis N-1. Daher wird arr[j1] jedes Mal konvertiert.

  • Durchqueren Sie abschließend noch einmal das gesamte Array und zählen Sie Nr. Es enthält 1 und wird in der Zählung gespeichert.

  • Gibt die Anzahl des gewünschten Ergebnisses zurück.

Beispiel

Live-Demo

#include <stdio.h>
int Onecount(int arr[], int N){
   for (int i = 1; i <= N; i++) {
      for (int j = i; j <= N; j++) {
         // If j is divisible by i
         if (j % i == 0) {
            if (arr[j - 1] == 0)
               arr[j - 1] = 1; // Convert 0 to 1
            else
               arr[j - 1] = 0; // Convert 1 to 0
         }
      }
   }
   int count = 0;
   for (int i = 0; i < N; i++)
      if (arr[i] == 1)
         count++; // count number of 1&#39;s
   return count;
}
int main(){
   int size = 6;
   int Arr[6] = { 0 };
   printf("Number of 1s in the array after N moves: %d", Onecount(Arr, size));
return 0;
}

Ausgabe

Wenn wir den obigen Code ausführen, wird die folgende Ausgabe generiert:

Number of 1s in the array after N moves: 2

Das obige ist der detaillierte Inhalt vonZählen Sie in der Sprache C die Anzahl der Einsen im Array nach N Bewegungen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:tutorialspoint.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen