Jadual Kandungan
Algoritma
Pendekatan 1: - Pendekatan Naif
Contoh
Output
Kaedah 2: Kaedah yang cekap
结论
Rumah pembangunan bahagian belakang C++ Nombor terbesar tidak melebihi N dan tidak mengandungi sebarang nombor dalam S

Nombor terbesar tidak melebihi N dan tidak mengandungi sebarang nombor dalam S

Sep 05, 2023 pm 05:17 PM
nombor maksimum tidak lebih daripada

Nombor terbesar tidak melebihi N dan tidak mengandungi sebarang nombor dalam S

Cabaran untuk mencari nombor terbesar tidak melebihi nombor N yang diberikan dan tidak mengandungi mana-mana digit dalam rentetan S adalah masalah yang melibatkan manipulasi rentetan dan teori nombor Matlamatnya adalah untuk menentukan nombor terbesar yang mungkin kurang daripada atau sama dengan N sementara juga tidak termasuk semua digit yang terdapat dalam rentetan S.

Sebagai contoh, pertimbangkan senario di mana N bersamaan dengan 1000 dan S bersamaan dengan "42". Dalam kes ini, nombor terbesar yang tidak melebihi N dan tidak mengandungi sebarang digit dalam S ialah 999. Ini kerana 999 ialah nombor terbesar yang mungkin dibentuk menggunakan digit 0, 1, 3, 5, 6, 7, 8, dan 9, tidak termasuk digit 4 dan 2 dalam rentetan S.

Pendekatan yang berbeza boleh digunakan untuk menyelesaikan masalah ini, seperti mengulangi semua nombor sehingga N dan mengesahkan sama ada digit mereka tidak terdapat dalam S, atau dengan menggunakan kaedah yang lebih kompleks seperti pengaturcaraan dinamik atau penjejakan ke belakang.

Algoritma

Langkah 1 − Kami akan mengisytiharkan dua pembolehubah rentetan bernama 'N' dan 'S' dalam fungsi utama().

Langkah 2 - Kami akan menghantar dua pembolehubah ini sebagai parameter kepada fungsi LargestNumberFinder().

Langkah 3 − Kami akan menukar rentetan nombor N dan S kepada integer secara tersirat untuk melakukan operasi matematik seperti perbandingan.

Langkah 4 - Kami akan mengeluarkan 0 di hadapan daripada nombor yang disimpan dalam N sama ada secara manual atau dengan mencipta fungsi yang akan melakukan perkara yang sama setiap kali.

Langkah 5 − Kemudian, kita akan mula membandingkan digit kedua-dua rentetan dan mengetahui nombor terbesar yang terbentuk tidak lebih daripada 'N' yang tidak mengandungi sebarang digit daripada rentetan 'S'.

Pendekatan 1: - Pendekatan Naif

Cara asas untuk mencari nombor terbesar dalam rentetan tertentu menggunakan semua nombor dalam rentetan lain adalah seperti berikut. Fungsi utama mengisytiharkan pembolehubah dan memanggil fungsi LargestNumberFinder. Fungsi ini mengambil dua rentetan sebagai input dan menyemak setiap nilai kurang daripada N yang mempunyai semua digit dalam rentetan S. Jika syarat dipenuhi, nilai dikembalikan dalam format rentetan. Fungsi kehadiran digunakan untuk menentukan sama ada nilai yang disimpan dalam 'i' adalah sebahagian daripada rentetan S semasa menukar S kepada jenis data integer. Rentetan input ditukar kepada integer dan gelung digunakan untuk menilai keadaan. Kod ini mengeluarkan nilai maksimum semua nombor dalam rentetan tertentu yang juga terdapat dalam rentetan lain.

Contoh

diterjemahkan sebagai:

Contoh

Kod ini ialah penyelesaian yang mencari nombor terbesar yang lebih kecil daripada N (rentetan input ditukar kepada integer) yang terdiri daripada digit dalam rentetan S. Kod ini menggunakan dua fungsi, 'kehadiran' dan 'PencariNumber Besar' untuk menentukan dan mengembalikan nombor terbesar. Fungsi kehadiran mengambil sebagai input integer 'i' dan rentetan 's', menyemak sama ada nilai yang disimpan dalam 'i' adalah sebahagian daripada rentetan 's' dan menukar 's' kepada jenis data integer. Fungsi LargestNumberFinder mengambil dua rentetan 'x' dan 's' sebagai input, menukar 'x' kepada integer, dan kemudian menggunakan fungsi kehadiran untuk menyemak semua nilai kurang daripada N dan semua nombor berada dalam 's'. Fungsi utama mengisytiharkan pembolehubah dan memanggil fungsi LargestNumberFinder, yang mengembalikan nombor terbesar sebagai rentetan.

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

#include <iostream>

#include <string>

#include <vector>

 

// function to check whether value stored in ‘i’ is part of string S while also converting S into integer data type.

bool attendance(int i, std::string s) {

   while (i) {

      int first_digit = i % 10;

      i /= 10;

      int t = std::stoi(s);

      bool found = false;

      while (t) {

         int second_digit = t % 10;

         t /= 10;

         if (second_digit == first_digit) {

            found = true;

            break;

         }

      }

      if (!found)

         return false;

   }

   return true;

}

 

// function to input two strings and check for each value less than N with all digits present in S.

std::string LargestNumberFinder(std::string x, std::string s) {

   int N = std::stoi(x);

   for (int i = N; i >= 1; i--) {

      if (attendance(i, s)) {

         return std::to_string(i);

      }

   }

   return "-1";

}

 

// main function to declare the variables and call the function.

int main() {

   std::string N = "100709";

   std::string S = "70";

   std::cout << LargestNumberFinder(N, S);

}

Salin selepas log masuk

Output

1

77777

Salin selepas log masuk

Kaedah 2: Kaedah yang cekap

Penyelesaian kepada masalah 2, iaitu mendapatkan nombor terbesar yang mungkin dengan menggantikan digit rentetan angka N yang diberikan dengan digit rentetan S yang diberikan, adalah pendekatan yang cekap. Kaedah ini terlebih dahulu menyemak sama ada setiap nombor N hadir dalam S dan menggantikan nombor pertama yang terdapat dalam S dengan nombor terbesar dalam S yang tiada dalam N. Nombor yang selebihnya kemudiannya digantikan dengan nombor terbesar dalam S yang bukan dalam N. Sifar pendahuluan kemudian dialih keluar dan hasilnya dikembalikan sebagai nombor terbesar yang mungkin. Kaedah ini lebih cekap daripada kaedah sebelumnya kerana ia tidak memerlukan rentetan untuk diisih.

Contoh

diterjemahkan sebagai:

Contoh

Kod menyelesaikan masalah mencari nombor yang boleh dibentuk daripada rentetan "N" yang diberikan dengan menggantikan digit terbesar dengan digit tertinggi yang tidak terdapat dalam rentetan "S". Kod ini menggunakan kaedah yang cekap untuk menyelesaikan masalah. Fungsi LargestNumberFinder mengambil dua input rentetan, "num" dan "s", dan mengembalikan bilangan terbesar yang mungkin. Vektor "vis_s" digunakan untuk menyimpan nilai rentetan "s". rentetan " num" yang merupakan sebahagian daripada rentetan "s". Kemudian ia menukar digit itu dengan angka tertinggi yang tidak terdapat dalam rentetan "s". digit dalam rentetan "num" dengan digit itu Sifar di hadapan dikeluarkan daripada rentetan akhir, dan jika rentetan itu kosong, fungsi mengembalikan "0". S" .

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

#include <iostream>

#include <string>

#include <vector>

 

using namespace std;

 

// function to check for all values of String N with String S and replacing the digit if found same with the largest possible digit not present in S.

string LargestNumberFinder(string num, string s) {

   vector<bool> vis_s(10, false);

   for (int i = 0; i < (int)s.size(); i++) {

      vis_s[int(s[i]) - 48] = true;

   }

   int n = num.size();

   int in = -1;

   for (int i = 0; i < n; i++) {

      if (vis_s[(int)num[i] - '0']) {

         in = i;

         break;

      }

   }

   if (in == -1) {

      return num;

   }

   for (char dig = num[in]; dig >= '0'; dig--) {

      if (vis_s[(int)dig - '0'] == 0) {

         num[in] = dig;

         break;

      }

   }

   char LargestDig = '0';

   for (char dig = '9'; dig >= '0'; dig--) {

      if (vis_s[dig - '0'] == false) {

         LargestDig = dig;

         break;

      }

   }

   for (int i = in + 1; i < n; i++) {

      num[i] = LargestDig;

   }

   int Count = 0;

   for (int i = 0; i < n; i++) {

      if (num[i] == '0')

         Count++;

      else

         break;

   }

   num.erase(0, Count);

   if ((int)num.size() == 0)

      return "0";

   return num;

}

int main() {

   string N = "161516";

   string S = "756";

   cout << LargestNumberFinder(N, S);

   return 0;

}

Salin selepas log masuk

Output

1

149999

Salin selepas log masuk

结论

通过这篇文章,我们更接近理解这些问题背后的原因,并理解了这些概念,这些概念将帮助我们在之前提到的重大实际问题中使用这些基本概念。就像在我们的代码中,我们分别解决每个问题,然后像制作美丽的手工品一样将代码缝合在一起,同样,我们将使用这个概念,尝试逐个解决问题。我们通常会从朴素的方法开始,但通过敏锐的眼光和努力,我们会找到更高效的方法。谁知道在阅读完这篇文章后,你会找到更好、更高效的方法,并进一步简化解决方案。所以,让我们坚持我们的信念和对思维和编码的信任,同时告别。

Atas ialah kandungan terperinci Nombor terbesar tidak melebihi N dan tidak mengandungi sebarang nombor dalam S. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Akan R.E.P.O. Ada Crossplay?
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

iOS 17: Cara menukar gaya jam iPhone dalam mod siap sedia iOS 17: Cara menukar gaya jam iPhone dalam mod siap sedia Sep 10, 2023 pm 09:21 PM

Siap sedia ialah mod skrin kunci yang diaktifkan apabila iPhone dipalamkan ke dalam pengecas dan berorientasikan dalam orientasi mendatar (atau landskap). Ia terdiri daripada tiga skrin berbeza, satu daripadanya dipaparkan masa skrin penuh. Teruskan membaca untuk mengetahui cara menukar gaya jam anda. Skrin ketiga StandBy memaparkan masa dan tarikh dalam pelbagai tema yang boleh anda leret secara menegak. Sesetengah tema juga memaparkan maklumat tambahan, seperti suhu atau penggera seterusnya. Jika anda menahan sebarang jam, anda boleh bertukar antara tema yang berbeza, termasuk Digital, Analog, Dunia, Suria dan Terapung. Terapung memaparkan masa dalam nombor gelembung besar dalam warna yang boleh disesuaikan, Solar mempunyai fon yang lebih standard dengan reka bentuk suar matahari dalam warna yang berbeza, dan Dunia memaparkan dunia dengan menyerlahkan

Hasilkan nombor rawak dan rentetan dalam JavaScript Hasilkan nombor rawak dan rentetan dalam JavaScript Sep 02, 2023 am 08:57 AM

Keupayaan untuk menjana nombor rawak atau rentetan alfanumerik berguna dalam banyak situasi. Anda boleh menggunakannya untuk melahirkan musuh atau makanan di lokasi yang berbeza dalam permainan. Anda juga boleh menggunakannya untuk mencadangkan kata laluan rawak kepada pengguna atau mencipta nama fail untuk menyimpan fail. Saya menulis tutorial tentang cara menjana rentetan alfanumerik rawak dalam PHP. Saya berkata pada permulaan siaran ini bahawa beberapa peristiwa benar-benar rawak, dan perkara yang sama berlaku untuk nombor rawak atau penjanaan rentetan. Dalam tutorial ini, saya akan menunjukkan kepada anda cara menjana rentetan alfanumerik pseudo-rawak dalam JavaScript. Menjana Nombor Rawak dalam JavaScript Mari mulakan dengan menjana nombor rawak. Kaedah pertama yang terlintas di fikiran ialah Math.random(), yang mengembalikan apungan

Program C++ untuk membundarkan nombor kepada n tempat perpuluhan Program C++ untuk membundarkan nombor kepada n tempat perpuluhan Sep 12, 2023 pm 05:13 PM

Mewakili nombor sebagai output adalah tugas yang menarik dan penting apabila menulis program dalam mana-mana bahasa. Untuk jenis integer (data jenis pendek, panjang atau sederhana), mudah untuk mewakili nombor sebagai output. Untuk nombor titik terapung (jenis terapung atau berganda), kadangkala kita perlu membundarkannya kepada nombor tempat perpuluhan tertentu. Sebagai contoh, jika kita ingin mewakili 52.24568 sebagai tiga tempat perpuluhan, beberapa prapemprosesan diperlukan. Dalam artikel ini, kami akan memperkenalkan beberapa teknik untuk mewakili nombor titik terapung kepada nombor tempat perpuluhan tertentu dengan membundarkan. Antara pendekatan yang berbeza, adalah penting untuk menggunakan rentetan format seperti C, menggunakan hujah ketepatan dan menggunakan fungsi round() daripada perpustakaan matematik. Mari kita lihat mereka satu persatu. dengan

Gunakan C++ untuk menulis kod untuk mencari nombor bukan persegi Nth Gunakan C++ untuk menulis kod untuk mencari nombor bukan persegi Nth Aug 30, 2023 pm 10:41 PM

Kita semua tahu nombor yang bukan kuasa dua mana-mana nombor, seperti 2, 3, 5, 7, 8, dll. Terdapat N nombor bukan persegi, dan adalah mustahil untuk mengetahui setiap nombor. Jadi, dalam artikel ini, kami akan menerangkan segala-galanya tentang nombor tanpa kuasa dua atau bukan kuasa dua dan cara untuk mencari nombor bukan kuasa dua N dalam C++. Nombor bukan kuasa dua ken Jika nombor ialah kuasa dua integer, maka nombor itu dipanggil kuasa dua sempurna. Beberapa contoh nombor kuasa dua sempurna ialah -1isquareof14issquareof29issquareof316issquareof425issquareof5 Jika nombor bukan kuasa dua mana-mana integer, maka nombor itu dipanggil bukan kuasa dua. Sebagai contoh, 15 nombor bukan kuasa dua yang pertama ialah -2,3,5,6,

Semak sama ada ia adalah nombor menggunakan fungsi is_numeric() dalam PHP Semak sama ada ia adalah nombor menggunakan fungsi is_numeric() dalam PHP Jun 27, 2023 pm 05:00 PM

Dalam bahasa pengaturcaraan PHP, fungsi is_numeric() ialah fungsi yang sangat biasa digunakan, digunakan untuk menentukan sama ada pembolehubah atau nilai ialah nombor. Dalam pengaturcaraan sebenar, selalunya perlu untuk mengesahkan nilai yang dimasukkan oleh pengguna untuk menentukan sama ada ia adalah jenis angka Dalam kes ini, fungsi is_numeric() boleh digunakan untuk menentukan. 1. Pengenalan kepada fungsi is_numeric() Fungsi is_numeric() ialah fungsi yang digunakan untuk mengesan sama ada pembolehubah atau nilai ialah nombor. Mengembalikan tru jika pembolehubah atau nilai ialah nombor

Cari nombor yang tidak boleh dibahagikan dengan mana-mana nombor dalam julat, menggunakan C++ Cari nombor yang tidak boleh dibahagikan dengan mana-mana nombor dalam julat, menggunakan C++ Sep 13, 2023 pm 09:21 PM

Dalam artikel ini, kita akan membincangkan masalah mencari nombor antara 1 dan n (diberi) yang tidak boleh dibahagikan dengan sebarang nombor antara 2 dan 10. Mari kita fahami ini dengan beberapa contoh - Input:num=14Output:3Penjelasan:Terdapat tiga nombor,1,11,dan13,yang tidak boleh dibahagikan.Input:num=21Output:5Penjelasan:Terdapat nombor1,11,13,17,dan19,yang tidak boleh dibahagi jika

Nombor dalam Java (dengan 0 awalan dan rentetan) Nombor dalam Java (dengan 0 awalan dan rentetan) Aug 29, 2023 pm 01:45 PM

Nombor dalam Java Adalah penting untuk memahami bahawa kelas nombor bukanlah kelas nyata tetapi kelas abstrak. Di dalamnya, kami mempunyai satu set kelas pembalut yang mentakrifkan fungsinya. Kelas pembalut ini termasuk Integer, Byte, Double, Short, Float dan Long. Anda mungkin perasan bahawa ini adalah jenis data asas yang sama yang kita bincangkan sebelum ini, tetapi ia diwakili sebagai kelas berasingan dengan nama huruf besar untuk mematuhi konvensyen penamaan kelas. Pengkompil secara automatik menukar jenis data primitif kepada objek dan sebaliknya seperti yang diperlukan untuk fungsi atau skop program tertentu, dan kelas berangka adalah sebahagian daripada pakej java.lang. Proses ini dipanggil autoboxing dan unboxing. Dengan memahami sifat abstrak kelas angka dan kelas pembalut yang sepadan, kita boleh

Mewakili nombor sebagai jumlah bilangan nombor perdana terbesar yang mungkin dalam C++ Mewakili nombor sebagai jumlah bilangan nombor perdana terbesar yang mungkin dalam C++ Aug 31, 2023 pm 04:29 PM

Bincangkan masalah, sebagai contoh, diberi nombor N, kita perlu membahagikan nombor itu kepada nombor perdana maksimumnya, kita boleh menolak nombor perdana daripada N dan kemudian menyemak perbezaan nombor perdana. Jika perbezaannya ialah nombor perdana, maka kita boleh menyatakan N sebagai hasil tambah dua nombor perdana. Tetapi di sini kita perlu

See all articles