Rumah >pembangunan bahagian belakang >C++ >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.
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.
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; }
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!