Calculez la différence minimale des nombres de Fibonacci, jugez la séquence de parenthèses légales

Table des matières

1. Calculez la différence minimale des nombres de Fibonacci

2. Jugement de séquence entre parenthèses légales


bonjour, c'est bangbang, aujourd'hui c'est 2 questions très simples. Accumulez des pas chaque jour, même des milliers de kilomètres !

1. Calculez la différence minimale des nombres de Fibonacci

Calcul de la différence minimale des nombres de Fibonacci

Idées de résolution de problèmes :

1. Simuler la suite de Fibonacci

        Utilisez 3 nombres f, f1=0, f2=1 (les deux premiers nombres de la suite de Fibonacci sont 0 et 1, et les nombres suivants sont la somme des deux premiers) pour réaliser la suite de Fibonacci par simulation circulaire, et f est Le nombre de Fibonacci actuel.

2. Trouvez les 2 nombres de Fibonacci les plus proches du nombre d'entrée (inférieur au nombre d'entrée ou supérieur ou égal au nombre d'entrée)

3.min (nombre d'entrée - nombre de Fibonacci plus petit, nombre de Fibonacci plus grand - nombre d'entrée), c'est-à-dire trouver la différence minimale 

Code:

#include <iostream>
using namespace std;

int main() {
   int f,f1=0,f2=1;     //Fib
   int n,left=0,right=0;//left是离n最近的较小Fib,right是离n最近的较大Fib
   cin>>n;
   while(1)
   {
        f=f1+f2;
        f1=f2;
        f2=f;
        if(f<n)
        {
            left=f; //跟着循环更新至最近的较小Fib
        }
        else {
            right=f;//最近的较大的Fib
            break;
        }
   }
   cout<<min(n-left,right-n)<<endl;
   return 0;
}

2. Jugement de séquence entre parenthèses légales

Jugement de la séquence entre parenthèses légales_Niuke.com (nowcoder.com) 

Idées de résolution de problèmes : Lorsque vous voyez ce genre de problème d'appariement, vous pouvez immédiatement penser à utiliser une pile.Les caractéristiques de la pile : dernier entré, premier sorti, qui respecte le principe d'appariement des parenthèses.

1. Traverser la corde

2. Lorsque '(' est poussé dans la pile, ')' est sorti de la pile (si la pile n'est pas vide à ce moment), si elle est vide, cela signifie qu'il n'y a pas de ')' correspondant, et false est retourné à ce moment.

3. Si d'autres caractères apparaissent, renvoyez faux directement, car le titre ne correspond qu'aux parenthèses 

4. Enfin, jugez si la pile est vide. Si elle est vide, cela signifie que tout correspond et renvoie vrai. Il y a 3 opérations ci-dessus, et nous pouvons utiliser l'instruction switch pour créer une branche.

Code:

class Parenthesis {
public:
    bool chkParenthesis(string A, int n) {
        stack<char>st;
        for(auto ch:A)
        {
            switch(ch)
            {
                case '(':             //'('入栈
                    st.push(ch);
                    break;
                case ')':             //')'出栈
                    if(st.empty())    //为空说明没有匹配的'('
                    {
                        return false;
                    }
                    st.pop();         //不为空,正常出栈
                    break;
                default:              //其他字符,返回false
                    return false;
            }
        }
        return st.empty();            //最终栈为空,说明全部匹配成功返回true
    }
};

Je suppose que tu aimes

Origine blog.csdn.net/bang___bang_/article/details/131815572
conseillé
Classement