நீர் பாட்டில்கள் லீட்கோட் தீர்வு


சிரமம் நிலை எளிதாக
அடிக்கடி கேட்கப்படுகிறது மைக்ரோசாப்ட்
பேராசை

சிக்கல் அறிக்கை

”வாட்டர் பாட்டில்கள்” என்ற பிரச்சினையில் எங்களுக்கு இரண்டு மதிப்புகள் வழங்கப்படுகின்றன, அதாவது மொத்த எண்ணிக்கையிலான முழு நீர் பாட்டில்கள் மற்றும் “நம்ப் எக்ஸ்சேஞ்ச்” ஆகியவற்றை சேமித்து வைக்கும், இது ஒரு நேரத்தில் நாம் பரிமாறிக்கொள்ளக்கூடிய மொத்த வெற்று நீர் பாட்டில்களை சேமித்து ஒரு முழு பெறலாம் தண்ணீர் குடுவை.

ஒரு முழு நீர் பாட்டில் இருந்து தண்ணீர் குடித்த பிறகு அது வெற்று நீர் பாட்டிலாக மாறும். நாம் குடிக்கக் கூடிய அதிகபட்ச நீர் பாட்டில்களைக் கண்டுபிடிப்பதே எங்கள் பணி.

உதாரணமாக

numBottles = 15, numExchange = 4
19

விளக்கம்:

நீர் பாட்டில்கள் லீட்கோட் தீர்வு

முதல் சுற்று: பானம் 15 தண்ணீர் பாட்டில்கள் 15 வெற்று பாட்டில்களைத் தருகின்றன.

இரண்டாவது சுற்று: இந்த 15 நீர் பாட்டில்களிலிருந்து 3 முழு நீர் பாட்டில்களைப் பெற்று 3 வெற்று பாட்டில்களுடன் எஞ்சியுள்ளோம். பானம் 3 நாங்கள் இப்போது மொத்தம் 6 வெற்று பாட்டில்களுடன் விட்டுச் சென்றோம்.

மூன்றாவது சுற்று: இந்த 6 நீர் பாட்டில்களிலிருந்து 1 முழு நீர் பாட்டிலைப் பெற்று 2 வெற்று பாட்டில்களுடன் எஞ்சியுள்ளோம். மொத்தம் 1 வெற்று பாட்டில்களுடன் நாங்கள் இப்போது விட்டுச் சென்ற 3 தண்ணீர் பாட்டில்களைக் குடிக்கவும்.

பாட்டிலை பரிமாற குறைந்தபட்சம் 4 பாட்டில்கள் தேவைப்படுவதால், இனி ஒரு முழு தண்ணீர் பாட்டிலை வாங்க முடியாது. எனவே நாம் குடிக்கக்கூடிய அதிகபட்ச தண்ணீர் பாட்டில்கள் 15 + 3 + 1 = 19.

நீர் பாட்டில்கள் லீட்கோட் தீர்வுக்கான அணுகுமுறை

பிரச்சினையைத் தீர்ப்பதற்கான அடிப்படை அணுகுமுறை என்ன கேள்விகளைக் கேட்பது.

  1. முழு நீர் பாட்டில்களையும் குடிக்கவும், பின்னர் அது வெற்று நீர் பாட்டில்களாக மாறும்.
  2. எல்லா வெற்று நீர் பாட்டில்களிலிருந்தும் முழு நீர் பாட்டில்களை வாங்கவும்.
  3. வெற்று நீர் பாட்டில் இருந்து ஒரு முழு தண்ணீர் பாட்டிலை வாங்க முடியாத வரை இந்த படிகளை மீண்டும் செய்யவும்.
  4. செயல்பாட்டின் போது நாங்கள் குடித்த மொத்த நீர் பாட்டில்களின் மொத்த எண்ணிக்கையைத் திருப்பி விடுங்கள்.

நாம் மேம்படுத்தலாம் சிக்கலான ஒரு சில அவதானிப்புகளைச் செய்வதன் மூலம் தீர்வு:

  1. எங்களிடம் முழு நீர் பாட்டில்களின் நம்போ பாட்டில் எண் உள்ளது, எனவே இது நாம் குடிக்கக்கூடிய முழு நீர் பாட்டில்களின் குறைந்தபட்ச எண்ணிக்கையாக இருக்கும்.
  2. 1 முழு நீர் பாட்டில் = 1 அலகு நீர் + 1 வெற்று நீர் பாட்டில்.
  3. NumExchange வெற்று நீர் பாட்டில்களிலிருந்து, எங்களுக்கு 1 முழு நீர் பாட்டில் (1 யூனிட் நீர் + 1 வெற்று நீர் பாட்டில்) கிடைக்கிறது. (NumExchange-1) தண்ணீர் பாட்டில்கள் 1 யூனிட் தண்ணீரைக் கொடுப்பதால் இந்த விஷயத்தையும் விளக்கலாம்.
  4. ஆனால் கடைசி சுற்றில் நம்மிடம் (numExchange-1) வெற்று பாட்டில்கள் இருந்தால், ஒரு யூனிட் தண்ணீரைப் பெற முடியாது.
  5. எனவே எங்கள் முடிவு numBottle + (numBottle / (numExchange -1)) ஆகவும், numBottle% (numExchange -1) == 0 ஆகவும் இருந்தால், இறுதி பதிலிலிருந்து 1 ஐக் கழிக்கவும்.

நடைமுறைப்படுத்தல்

நீர் பாட்டில்களுக்கான சி ++ குறியீடு

#include <bits/stdc++.h> 
using namespace std; 
    int numWaterBottles(int numBottles, int numExchange) {
        int ans= numBottles + (numBottles) / (numExchange - 1);
        if((numBottles) %(numExchange - 1)==0)
            ans--;
        return ans;
    }
int main() 
{ 
 int numBottles = 15, numExchange = 4;
 int ans=numWaterBottles(numBottles,numExchange);
 cout<<ans<<endl;
 return 0;
}
19

நீர் பாட்டில்களுக்கான ஜாவா குறியீடு

import java.util.Arrays;
import java.util.Set ;
import java.util.HashSet;
public class Tutorialcup {
    public static int numWaterBottles(int numBottles, int numExchange) {
        int ans= numBottles + (numBottles) / (numExchange - 1);
        if((numBottles) %(numExchange - 1)==0)
            ans--;
        return ans;
    }
  public static void main(String[] args) {
     int numBottles = 15, numExchange = 4;
     int ans=numWaterBottles(numBottles,numExchange); 
        System.out.println(ans);
  }
}
19

நீர் பாட்டில்கள் லீட்கோட் தீர்வின் சிக்கலான பகுப்பாய்வு

நேர சிக்கலானது

மேலே உள்ள குறியீட்டின் நேர சிக்கலானது ஓ (1).

விண்வெளி சிக்கலானது

மேலே உள்ள குறியீட்டின் இட சிக்கலானது ஓ (1) ஏனென்றால் பதிலைச் சேமிக்க ஒரு மாறி மட்டுமே பயன்படுத்துகிறோம்.

குறிப்புகள்