Rumah  >  Artikel  >  Java  >  Dalam Java, cari tatasusunan menggunakan operasi XOR yang berbeza pada elemen menggunakan kumpulan bersaiz 4

Dalam Java, cari tatasusunan menggunakan operasi XOR yang berbeza pada elemen menggunakan kumpulan bersaiz 4

WBOY
WBOYke hadapan
2023-08-26 10:45:071196semak imbas

Dalam Java, cari tatasusunan menggunakan operasi XOR yang berbeza pada elemen menggunakan kumpulan bersaiz 4

Terjemah ayat berikut ke dalam bahasa Cina dan simpan kod html tanpa menambah kandungan baharu:

Kami diberi tatasusunan integer bersaiz N (saiz gandaan 4) dan kami mesti Melakukan operasi XOR pada tatasusunan supaya input[1- 4] kelihatan seperti utiliti_arr[1- 4] dan keadaan pengiraan adalah jika arr[1 – 4] = {a1, a2, a3, a4} Kemudian q[1 – 4] = {a1 ⊕ a2 ⊕ a3, a1 ⊕ a2 ⊕ a4, a1 ⊕ a3 ⊕ a4, a2 ⊕ a3 ⊕ a4}

Mari kita lihat pelbagai senario input dan output situasi ini -

In − int[] input = { 5, 2, 3, 4 };

Keluar − Hasil selepas operasi XOR 4 3 2 5

Penjelasan−Keluaran get XORnya ialah hanya dua terminal input hanya menjadi "tinggi" apabila ia berada pada tahap logik "berbeza". Jika kedua-dua input A dan B berada pada tahap logik "1" atau "0", outputnya ialah "0", menjadikan get sebagai "gerbang ganjil tetapi bukan get genap". Dalam erti kata lain, apabila input mempunyai nombor ganjil 1, output ialah "1".

a1 ⊕ a2 ⊕ a3 = 5 ⊕ 2 ⊕ 3 = 4

a1 ⊕ a2 ⊕ a4 = 5 ⊕ 2 ⊕ 4 = 3

a1 ⊕ a4 = ⊕ a4 = ⊕ a4

a2 ⊕ a3 ⊕ a4 = 2 ⊕ 3 ⊕ 4 = 5

Masuk − int[] input = { 7, 6, 4, 4, 3, 8, 9, 5 };

Keluar ATAU operasi 5 5 7 6 2 14 15 4

Penjelasan− Keluaran get XOR hanya menjadi "tinggi" apabila dua terminal inputnya berada pada tahap logik "berbeza" antara satu sama lain. Jika kedua-dua input A dan B berada pada tahap logik "1" atau "0", outputnya ialah "0", menjadikan get sebagai "gerbang ganjil tetapi bukan get genap". Dalam erti kata lain, apabila input mempunyai nombor ganjil 1, output ialah "1". Hanya berfungsi untuk saiz input[] yang merupakan gandaan 4, tatasusunan input saiz lain akan memaparkan 0s sebagai ganti nombor dalam kedudukan ganjil.

Hasil selepas operasi XOR 5 5 7 6 2 14 15 4

Kaedah yang digunakan dalam atur cara berikut adalah seperti berikut -

  • Mengikut sifat XOR a ⊕ a = 0 dan a ⊕ 0. (a ⊕ b ⊕ c) ⊕ (b ⊕ c ⊕ d) = a ⊕ d (As (b ​​​​⊕ c) ⊕ (b ⊕ c) = 0)

  • Untuk pengiraan, bahagikan tatasusunan kepada 4 kumpulan , kami Keputusan untuk setiap kumpulan akan dikira mengikut sifat XOR.

  • Merujuk kepada sifat di atas, menggunakan (a ⊕ d) kita boleh mengira b dan c (a ⊕ b ⊕ d) ⊕ (a ⊕ d) = b (a ⊕ c ⊕ d) ⊕ (a ⊕ d) = c

  • Dengan menggunakan b dan c, kita boleh mendapatkan a dan d menggunakan (a ⊕ b ⊕ c) ⊕ (b) ⊕ (c) = a (b ⊕ c ⊕ d) ⊕ (b) ⊕ (c) = d

  • Ulang proses untuk keempat-empat kumpulan

  • Lelaran gelung menggunakan 2 penunjuk i dan j sehingga panjang tatasusunan dibahagikan dengan empat, dan memperkenalkan nilai sementara (ans) dan tatasusunan utiliti (untuk menyimpan jawapan).

  • Laksanakan operasi XOR berikut dalam gelung for

    ans= tatasusunan input[i] ⊕ tatasusunan input[i+3]

    susunan utiliti[i+1](kira b)= tatasusunan input[i+ 1] ⊕ ans

    tatasusunan utiliti[i+2](kira c)=susunan input[i+2] ⊕ ans

    susunan utiliti[i](kira a)=susunan input[i]⊕((susunan utiliti[ i + 1]) ^ (susunan utiliti [i + 2]))

    tatasusunan utiliti [i] (kira d) ) = tatasusunan input [i + 3] ⊕ ((susunan utiliti [i + 1]) ^ (susunan utiliti[ i + 2]))

  • dan penuding dikemas kini untuk set empat aksara seterusnya

  • Akhir sekali, tatasusunan dicetak dan hasilnya dikembalikan kepada pengguna.

Contoh

import java.util.Arrays;
import java.util.List;
public class Tutorials{
   static int ans = 0;
   public static void main(String args[]){
      int[] input = {7, 1, 2, 3};
      int[] arr = new int[input.length];
      for (int i = 0, j = 0; j < input.length / 4; j++){
         ans = input[i] ^ input[i + 3];
         arr[i + 1] = input[i + 1] ^ ans;
         arr[i + 2] = input[i + 2] ^ ans;
         arr[i] = input[i] ^ ((arr[i + 1]) ^ (arr[i + 2]));
         arr[i + 3] = input[i + 3] ^ (arr[i + 1] ^ arr[i + 2]);
         i += 4;
      }
      System.out.println("Different XORs of elements in groups of size 4 is: ");
      for (int i = 0; i < arr.length; i++){
         System.out.println(arr[i]);
      }
   }
}

Output

Jika kita menjalankan kod di atas, output berikut akan dihasilkan

Different XORs of elements in groups of size 4 is :
4
5
6
0

Atas ialah kandungan terperinci Dalam Java, cari tatasusunan menggunakan operasi XOR yang berbeza pada elemen menggunakan kumpulan bersaiz 4. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:tutorialspoint.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam