Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Dalam matriks lanjutan, kembalikan elemen sebelumnya dalam C++

Dalam matriks lanjutan, kembalikan elemen sebelumnya dalam C++

WBOY
WBOYke hadapan
2023-09-15 09:17:021016semak imbas

Dalam matriks lanjutan, kembalikan elemen sebelumnya dalam C++

Bincangkan masalah berdasarkan matriks lanjutan. Matriks lanjutan ialah matriks yang saiznya bertambah dengan beberapa faktor.

Di sini kita mempunyai matriks aksara yang saiznya dibesarkan dengan gandaan 2, iaitu jika saiz matriks asal ialah N * N, maka saiz matriks yang dikembangkan menjadi 2N * 2N. Kami diberi urutan aksara yang terletak di (i, j) dan kami perlu mengembalikan jujukan aksara yang terletak di (i, (j - N - 1)%N).

Mari kita fahami dengan menggambarkan beberapa matriks pengembangan awal.

Given Matrix -> [ a, b ] [ c, d ], 2 X 2 matrix
Multiplying with { a, b, c, d }
A X [ a, b ]
B X [ a, b ]
C X [ a, b ]
D X [ a, b ]
[ c, d ] [ c, d ] [ c, d ] [ c, d ]

Expanded Matrix -> [ aa, ab, ba, bb ]
[ ac, ad, bc, bd ]
[ ca, cb, da, db ]
[ cc, cd, dc, dd ], 4X4 matrix
To expand again, multiply it by { a, b, c, d } and a matrix of size 8X8 will be formed.

Expanded Matrix - > [ aaa, aab, aba, abb, baa, bab, bba, bbb ]
[ aac, aad, abc, abd, bac, bad, bbc, bbd ]
[ aca, acb, ada, adb, bca, bcb, bda, bdb ]
[ acc, acd, adc, add, bcc, bcd, bdc, bdd ]
[ caa, cab, cba, cbb, daa, dab, dba, dbb ]
[ cac, cad, cbc, cbd, dac, dad, dbc, dbd ]
[ cca, ccb, cda, cdb, dca, dcb, dda, ddb ]
[ ccc, ccd, cdc, cdd, dcc, dcd, ddc, ddd ]

Ini adalah dua matriks pengembangan awal; dengan mengandaikan kita mendapat jujukan aksara "bcc", maka kita perlu mengembalikan jujukan yang baru ditinggalkan, iaitu "tambah". Juga, dengan mengandaikan matriks adalah kitaran, iaitu jika urutan yang diberikan adalah pada (i, 0), maka kembalikan urutan pada (i, N-1)

Input: abb
Output: aba
Explanation: The sequence just left to abb is aba in the 8X8 matrix.

Input: aadc
Output: aacd

Input: abbcd
Output: abbcc

Cara-cara untuk mencari penyelesaian

Fikirkan masalahnya dahulu , satu-satunya penyelesaian yang terlintas di fikiran Penyelesaiannya adalah untuk mencari matriks lanjutan yang mengandungi urutan yang diberikan tetapi tidak kelihatan sangat kompleks. Kita perlu membentuk matriks terlebih dahulu dan kemudian mencari urutannya.

Pendekatan cekap

Selepas melihat beberapa matriks yang mula-mula berkembang, kami menemui corak yang melaluinya kami boleh melihat elemen sebelumnya. Iaitu,

  • merentasi urutan aksara bermula dari indeks terakhir.

  • Jika elemen indeks ialah 'b' atau 'd' maka tukarkannya kepada 'a' atau 'c' dan berhenti melintasi tatasusunan.

  • Jika elemen indeks ialah 'a' atau 'c', ' tukarkannya kepada 'b' atau 'd' dan beralih ke indeks seterusnya dan semaknya.

Contoh

C++ Kod kaedah di atas

#include <bits/stdc++.h>
using namespace std;
int main (){
   string seq = "abbcd";
   int n = seq.length ();
   // traverse through the string from last.
   for (int i = n; i >= 0; i--){
      // if the element is b or d, change them and stop traversing.
      if (seq[i] == &#39;b&#39;){
      seq[i] = &#39;a&#39;;
      break;
   }
   if (seq[i] == &#39;d&#39;){
      seq[i] = &#39;c&#39;;
      break;
   }
   // if an element is b or d, change them and move to the next element.
   if (seq[i] == &#39;a&#39;)
      seq[i] = &#39;b&#39;;
   else if (seq[i] == &#39;c&#39;)
      seq[i] = &#39;d&#39;;
   }
   cout << "The Previous sequence is: " << seq;
   return 0;
}

Output

The previous sequence is: abbcc

Kesimpulan

Dalam artikel ini, kita membincangkan tentang matriks aksara lanjutan dan bagaimana ia terbentuk. Kami juga membincangkan mencari elemen sebelumnya dalam matriks lanjutan. Kami menyelesaikan masalah ini dengan memahami corak yang dicipta oleh matriks aksara lanjutan.

Kami juga membincangkan kod C++ untuk menyelesaikan masalah ini, yang boleh kami tulis dalam mana-mana bahasa pengaturcaraan seperti C, Java, Python, dll. Kami harap anda mendapati tutorial ini membantu.

Atas ialah kandungan terperinci Dalam matriks lanjutan, kembalikan elemen sebelumnya dalam C++. 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