Rumah >Java >javaTutorial >Dalam Java, cari tatasusunan menggunakan operasi XOR yang berbeza pada elemen menggunakan kumpulan bersaiz 4
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 = 4a1 ⊕ a2 ⊕ a4 = 5 ⊕ 2 ⊕ 4 = 3a1 ⊕ a4 = ⊕ a4 = ⊕ a4 a2 ⊕ a3 ⊕ a4 = 2 ⊕ 3 ⊕ 4 = 5Masuk − 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.
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.
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]); } } }
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!