题意:就是讲给出一个数n,让你求最少由多少个像0,1,10,11......这样的二进制数相加构成;样例n=9就是由9个二进制1相加组成,我不懂比赛的时候我为什么没有看懂题目在讲什么;再举个例子吧!n=2333 就有二进制1111,1111,111三个数相加而成;
代码:
#include#include #include using namespace std;int main(){ int n,maxn=0; cin>>n; while (n>0) { maxn=max(maxn,n%10); n=n/10; } cout << maxn << endl; return 0;}
大鱼吃小鱼
分析:用栈来实现,当鱼儿向右游的时候入栈,向左移的时候,将它与栈顶鱼儿的体积进行比较,当栈非空的时候,把当前鱼儿和栈顶鱼儿的体积进行比较,如果大于栈顶鱼儿,则吃掉栈顶鱼儿,如果小于栈顶鱼儿体积,则被栈顶鱼儿吃掉,听上去很容易的吧!!!不幸的是比赛的时候我又把题目理解成更水的意思了!!!!!
代码:
#include#include #include #include #include #include #include using namespace std;int main(){ int n; cin>>n; stack s; int a,b; int num=n; for (int i=1;i<=n;i++) { cin>>a>>b; if (b==1) s.push(a); else if (b==0) { while (!s.empty()) { if (a>s.top()) s.pop(),num--; else { num--; break; } } } } cout << num << endl;}