2016-07-25 3 views
-1

Я разработал эту программу для добавления и получения 15 $ в стеке. Мне было интересно, есть еще один более эффективный способ написать мой код.Альтернативный способ вставить в стек

#include <iostream> 
#include <stack> 
#include <vector> 

using namespace std; 

int main() 
{ 
    const int MAX = 100; 
    int count; 


    stack<int, vector<int> > billStack; 

    for (int i=0; i<15; i++) { 
     billStack.push(i);  // add 15 bills onto stack 
    } 

    cout << "The stack has " << billStack.size() << " bills.\n"; 

    int cash; 
    cout << "How many bills to retrieve?\n"; 
    cin >> cash; 
    for (int i = 0; i< cash; i++) { 
     billStack.pop(); 
    } 
    cout << "Cash out :" << cash << ". Remaining: " << billStack.size() << endl; 
    return 0; 
} 
+0

Я не вижу, очевидно, более эффективный способ, чтобы написать это, нет. – immibis

+1

Это определенно самая эффективная версия самого неэффективного кода для решения таких задач. –

+0

(Я имею в виду, я видел ответ Игоря, но я предполагаю, что вы действительно хотите использовать стек по какой-то причине) – immibis

ответ

2

Учитывая, что вы никогда не использовать реальное содержимое стека, только его размер:

#include <iostream> 

using namespace std; 

int main() 
{ 
int stackSize = 15; 
cout << "The stack has " << stackSize << " bills.\n"; 

int cash; 
cout << "How many bills to retrieve?\n"; 
cin >> cash; 

stackSize -= cash; 
cout << "Cash out :" << cash << ". Remaining: " << stackSize << endl; 
return 0; 
} 
+0

Uhm, вы можете отказаться от переменной 'stackSize', а также с помощью' return 0; '. Тогда оставшаяся неэффективность - это поток, основанный на потоке, который может быть заменен на '' i/o. Я думаю, что все. :) –

Смежные вопросы