Rumah >pembangunan bahagian belakang >C++ >Dalam C, jumlah maksimum yang boleh dikeluarkan dalam dua langkah

Dalam C, jumlah maksimum yang boleh dikeluarkan dalam dua langkah

WBOY
WBOYke hadapan
2023-09-22 08:05:171402semak imbas

Dalam C, jumlah maksimum yang boleh dikeluarkan dalam dua langkah

Kami mempunyai dua loker dipanggil L1 dan L2 dengan beberapa syiling di dalamnya. L1 mempunyai syiling A dan L2 mempunyai syiling B. Kita mesti mengeluarkan syiling dari loker untuk memaksimumkan jumlah yang dikeluarkan. Setiap kali syiling dikeluarkan dari mana-mana loker, ia digantikan dengan jumlah sebelumnya tolak 1 syiling. Jika kita mengambil syiling A dari L1, maka ia akan digantikan dengan syiling A-1, dan jika kita mengambil syiling B dari L2, maka ia akan digantikan dengan syiling B-1. Tugasnya adalah untuk memaksimumkan jumlah yang dikeluarkan dalam dua langkah. Ini bermakna syiling hanya boleh dikeluarkan dua kali.

Input - L1 - 10, L2 - 11

Output - Jumlah maksimum yang boleh dibawa keluar dalam dua langkah - 21

Penjelasan - Dalam langkah pertama, 1 dari L2 koin kita keluarkan L2 akan digantikan dengan 11-1=10 syiling.

Pada langkah kedua, kedua-dua L1 dan L2 mempunyai 10 syiling, jadi ia boleh diambil dari mana-mana satu, kita mempunyai 11+10=21 syiling, iaitu maksimum.

Input - L1-5, L2-5

Output - Jumlah maksimum yang boleh dikeluarkan dalam dua langkah - 10

Penjelasan - Dalam langkah pertama, kami mengeluarkan 5 daripada L1 akan digantikan dengan 5-1=4 syiling.

Pada langkah kedua, L1 ada 4 syiling dan L2 ada 5 syiling, jadi kita ambil 5 syiling dari L2 dan kita ada 5+5=10 syiling, iaitu maksimum.

Kaedah yang digunakan oleh program berikut adalah seperti berikut

  • Kami mempunyai dua loker integer L1 dan L2, yang mengandungi beberapa syiling.

  • Fungsi maxMoney(int A, int B) mengambil bilangan syiling dalam loker sebagai input.

  • Dalam fungsi maxMoney(), kami menggunakan 'wang' pembolehubah untuk menyimpan jumlah maksimum.

  • Pada mulanya, nilai wang datang dari A atau B yang lebih besar. (wang=A>B?A:B)

  • Bandingkan nilai wang dengan A atau B untuk menentukan syiling bekas yang telah dikeluarkan.

  • Sekarang gantikan bekas dengan jumlah sebelumnya tolak 1 syiling. (A-- atau B--)

  • Tambah nilai wang kepada yang lebih besar daripada A atau B sekali lagi. (wang+=A>B?A:B)

    Jika k kecil, jumlah unsur k terkecil ialah terkecil -
  • Storage abs((jumlah keseluruhan tatasusunan) - (jumlah unsur k terkecil ) dalam D1 Dua kali ganda jumlah )).

    Jika k lebih besar, jumlah elemen k terbesar ialah terbesar -

  • Simpan abs dalam D2 ((jumlah keseluruhan tatasusunan) - (dua kali ganda jumlah elemen k terbesar) Dua kali ialah Kerana jumlah tatasusunan juga mengandungi unsur-unsur ini.

  • Bandingkan D1 dengan D2 dan simpan nilai maksimum dalam maxD.

  • Kembalikan maxD sebagai hasilnya.

Contoh

Live Demo

Code:
#include <stdio.h>
#include <math.h>
// Function to return the maximum coins we can get
int maxMoney(int A, int B){
   //take coins
   int money=A>B?A:B;
   //refill the lockers with 1 less no.of coins
   if(money==A)
      A--;
   else
      B--;
   //withdraw again
   money+=A>B?A:B;
   return money;
}
// Driver code
int main(){
   int L1 = 8, L2 = 9;
   printf("Maximum money that can be withdrawn in two steps: %d" , maxMoney(L1, L2));
   return 0;
}

Output

Jika kita menjalankan kod di atas, ia akan menghasilkan output berikut −

Maximum money that can be withdrawn in two steps: 17

Atas ialah kandungan terperinci Dalam C, jumlah maksimum yang boleh dikeluarkan dalam dua langkah. 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
Artikel sebelumnya:Teka-teki penunjuk C/C++?Artikel seterusnya:Teka-teki penunjuk C/C++?