ከተሰጠው ቅደም ተከተል ዝቅተኛውን ቁጥር ይፍጠሩ  


የችግር ደረጃ መካከለኛ
ውስጥ በተደጋጋሚ ተጠየቀ የተከማቸ አማዞን አፍቃሪዎች ጎልድማን ሳክስ መረጃ ጠርዝ Snapchat
ሰልፍ ክምር ሕብረቁምፊ

ችግሩ “ከተሰጠ ቅደም ተከተል አነስተኛውን ቁጥር ይመሰርቱ” የሚለው የተወሰነ ንድፍ እንደተሰጠዎት ይገልጻል እኔ ነኝ ብቻ። ትርጉሙ I የተሰጠንን ለመጨመር እና ለመቀነስ ይቆማል D. የችግሩ መግለጫ የተሰጠውን ንድፍ የሚያረካውን አነስተኛውን ቁጥር ለማተም ይጠይቃል። ከ1-9 ያሉትን አሃዞችን መጠቀም አለብን እና ምንም አሃዞች መደገም የለባቸውም ፡፡

ለምሳሌ  

DIID
21354

ማስረጃ

የመጀመሪያው አሃዝ 2 ነው በመቀጠል ከቀነሰ በኋላ የሚቀጥለው አሃዝ 1. ከዚያም 2 መጨመር 3 ዝቅተኛው አኃዝ ከ 2 ይበልጣል እና ከዛም እንደገና መጨመር አለብን ግን እንደገና ከጨመርን በኋላ መቀነስ አለብን ፡፡ . አኃዞች መደገም ስለማይችሉ ፡፡ ስለዚህ በ 2 እንጨምረዋለን ከዚያም በ 1 እንቀንሳለን ፡፡

ስለዚህ ውጤቱ 2 1 3 5 4 ይሆናል

ጭንቅላታም መያያዣ መርፌ

እንደገና የአሁኑን አሃዝ እንጨምራለን ፡፡ ግን ያንን ያደርገናል 4 እና ከቀነሰ በኋላ ወይ 1 ፣ 2 ወይም 3 ን መጠቀም አለብን እናም እነዚህ ሁሉ ቁጥሮች ቀድሞ ጥቅም ላይ ውለዋል። ስለዚህ የአሁኑን አሃዝ ወደ 5. ማደግ ያስፈልገናል እናም ወደዚያ የምንደርስበት መንገድ ነው ፡፡

ከተሰጠው ቅደም ተከተል አነስተኛውን ቁጥር ለመመስረት ስልተ-ቀመር  

  1. የተሰጠው ቅደም ተከተል ርዝመት ከ 9 ይበልጣል ወይም እኩል መሆኑን ያረጋግጡ ፣ እውነት ከሆነ ይመለሱ -1።
  2. የ n + 1 መጠን ሰንጠረዥን ያውጅ እና የመቁጠር ዋጋውን ወደ 1 ያቀናብሩ።
  3. ድርድርን ከ 0 እስከ n (በአጠቃላይ) ማቋረጥ ይጀምሩ።
    1. መኖሩን ያረጋግጡ i ከ ጋር እኩል ነው n ወይም የሕብረቁምፊው የአሁኑ ገጸ-ባህሪ ከ “እኔ” ጋር እኩል ነው ፣ ከዚያ እውነት ከሆነ
      1. ድርድሩን ከቀዳሚው እሴት እስከ -1 ያቋርጡ።
        1. የሚከተሉትን ደረጃዎች በመከተል የውጤት ድርድር እሴቶችን ያዘምኑ።
          1. የመቁጠር ዋጋን ይጨምሩ እና ወደ ውፅዓት ድርድር ያከማቹ።
          2. መኖሩን ያረጋግጡ j የአሁኑ መረጃ ጠቋሚ ከ 0 ይበልጣል ፣ እንዲሁም የሕብረቁምፊው የአሁኑ ቁምፊ “እኔ” ነው ፣ ከዚያ ፣ ይሰብሩ።
  4. ተመላሽ ውጤት
ተመልከት
የሁለትዮሽ ዛፍ ዚግዛግ ደረጃ ትዕዛዝ ተሻጋሪ

ማስረጃ

አንድ ሕብረቁምፊ እና እኔ እና ዲ ብቻ የተሰጠን ከተሰጠን ጋር ሊፈጠር የሚችል ንድፍ እንድናተም ተጠይቀናል ክር, እዚህ I የተሰጠውን ቅደም ተከተል ሊያረጋግጥ የሚችል አነስተኛ ቁጥር ማዘጋጀት ወይም መመስረት ያለብንን መጨመርን ያመለክታል። ካልን እንበል DIየት D ዝቅተኛውን ቁጥር ለመቀነስ ማለት ነው ፣ ይህም 2 ን እንደ አነስተኛ ቁጥር 21 በመመሥረት ይከተላል። አሃዞቹ ሊደገሙ አይችሉም ፣ ቁጥሩ ቁጥሮችን ከ1-9 ብቻ መያዝ ይችላል ፡፡ ከዚያ በኋላ ፣ “እኔ” አለ ፣ አነስተኛውን ቁጥር መጨመር አለብን። 21 ቀድሞውኑ ስለሆነ ፡፡ ቁጥሩን እየጨመረ ለመመስረት ነው ዓላማችን ፡፡ ስለሆነም 1 በ 3 ይከተላል ፣ ምክንያቱም 2 ቀድሞውኑ ጥቅም ላይ ስለዋለ እና ከዚያ በኋላ 3 መቀላቀል የሚችለው ብቸኛው ቁጥር ነው።

በእነዚህ ሁሉ ፅንሰ-ሀሳቦች እና ሀሳቦች የተሰጠንን ቅድመ-ሁኔታ ተከትሎ የሚገኘውን እና የሚያሟላውን አነስተኛውን ቁጥር እንዲያትሙ እንጠየቃለን ፡፡ ሁላችንም ምርታችንን ወደዚያ የቁምፊ ድርድር የምናከማችበትን የውጤት ድርድር ልንጠቀም ነው ፡፡ ለመረጃ ማረጋገጫ እና ማረጋገጫ አንዳንድ ሁኔታዎችን አደረግን ፡፡ የሕብረቁምፊውን ርዝመት ከ 9. የበለጠ ወይም እኩል ካገኘን ከዚያ ከ1-1 አሃዝ እንድንጠቀም በጥብቅ ስለታዘዝን እና ምንም አሃዝ ሊደገም ስለማይችል ከዚያ -9 እንመለሳለን ፡፡

የተቀበልነውን ገመድ እንደ ግብዓት አቋርጠው ፡፡ የአሁኑ መረጃ ጠቋሚ ከህብረቁምፊው ርዝመት ጋር እኩል ከሆነ ወይም የአሁኑ ቁምፊ ከ “እኔ” ጋር እኩል ነው። ከዚያ እኛ ብቻ እንቀጥላለን። ከዚያ በኋላ ከቀዳሚው እሴት ወደ የአሁኑ እሴት (i) መሻገር ይጀምሩ ፣ እስከ -1 ደርሷል። በዚህ ዑደት ውስጥ የመቁጠር ዋጋን በመጨመር እና በመረጃ ጠቋሚ j + 1 ወደ ውፅዓት ድርድር ማከማችንን እንቀጥላለን ፡፡ ከዚያ እሴቱን ያረጋግጡ j ይበልጣል ወይም እኩል ነው እና እንዲሁም የአሁኑ ገጸ-ባህሪ “እኔ” ከሆነ። እውነት ከሆነ ፣ ከዚያ ቀለበቱን ይሰብሩ እና ለተጨማሪ ቁምፊዎች ተጨማሪ ይቀጥሉ።

ተመልከት
የዚግዛግ ልወጣ

ኮድ  

ከተሰጠው ቅደም ተከተል አነስተኛውን ቁጥር ለመመስረት የ C ++ ኮድ

#include<iostream>

using namespace std;

string getMinimumNumberSeq(string str)
{
    int n = str.length();

    if (n >= 9)
        return "-1";

    string output(n+1, ' ');

    int count = 1;

    for (int i = 0; i <= n; i++)
    {
        if (i == n || str[i] == 'I')
        {
            for (int j = i - 1 ; j >= -1 ; j--)
            {
                output[j + 1] = '0' + count++;
                if(j >= 0 && str[j] == 'I')
                    break;
            }
        }
    }
    return output;
}
int main()
{
    string inputs[] = { "DIID", "ID", "II", "DI", "DDII", "IDID", "IDIDID"};

    for (string input : inputs)
    {
        cout << getMinimumNumberSeq(input) << "\n";
    }
    return 0;
}
21354
132
123
213
32145
13254
1325476

ከተሰጠው ቅደም ተከተል አነስተኛውን ቁጥር ለመመስረት የጃቫ ኮድ

class minimumNumberID
{
    static String getMinimumNumberSeq(String str)
    {
        int n = str.length();

        if (n >= 9)
            return "-1";

        char output[] = new char[n + 1];

        int count = 1;

        for (int i = 0; i <= n; i++)
        {
            if (i == n || str.charAt(i) == 'I')
            {
                for (int j = i - 1; j >= -1; j--)
                {
                    output[j + 1] = (char) ((int) '0' + count++);
                    if (j >= 0 && str.charAt(j) == 'I')
                        break;
                }
            }
        }
        return new String(output);
    }
    public static void main(String[] args)
    {
        String inputs[] = { "DIID", "ID", "II", "DI", "DDII", "IDID", "IDIDID" };

        for(String input : inputs)
        {
            System.out.println(getMinimumNumberSeq(input));
        }
    }
}
21354
132
123
213
32145
13254
1325476

ውስብስብነት ትንተና  

የጊዜ ውስብስብነት

ኦ (ኤን) የት "N" የጥያቄው ገመድ ርዝመት ነው። መጀመሪያ ወደ ጎጆው ውስጥ እንደገባን ያረጋግጡ ፣ ወደ መጨረሻው ከደረስን ወይም አሁን ያለው መረጃ ጠቋሚ እኔ ከሆነ ብቻ ነው እናም የተጎበኘው ሉፕ ወደ ኋላ አቅጣጫ የሚሮጥ ከሆነ እና ከተገናኘን ከጉዞው እንወጣለን ፡፡ ስለዚህ እኛ ማለት እንችላለን አንድ I ሲገጥመን ወደ ጎጆው ዙር እንደገባን እና በውስጣቸው ዲ በተከማቸው ማውጫዎች ላይ እንሰራለን ፡፡ እያንዳንዱ መረጃ ጠቋሚ እኔ ወይም መ ሊኖረው ስለሚችል እኛ በእያንዳንዱ ባሕርይ ላይ አንድ ብቻ እናልፋለን ፡፡ ስለዚህ የጊዜ ውስብስብነት መስመራዊ ነው።

ተመልከት
የቀይ ጥቁር ዛፍ መግቢያ

የቦታ ውስብስብነት

ኦ (ኤን)፣ ውጤቱን ለማከማቸት የውጤት ቁምፊ ድርድር ስለፈጠርን። ለችግሩ የቦታ ውስብስብነት እንዲሁ መስመራዊ ነው ፡፡