#include#include<string.h>using namespace std;#define N 50typedef struct StackNode{ char data; struct StackNode *next;}StackNode,*LinkStack;void InitStack(LinkStack &s){ s=NULL;}void Push(LinkStack &s, char x){ StackNode *p; p=new StackNode; p->data=x; s=p;}void Pop(LinkStack &s,char x)//出栈 { if(s!=NULL) { StackNode *p; x=s->data; p=s; s=s->next; delete p; }}void Print(int flag,LinkStack s){ if(flag == 0) { cout<<1<<endl; } else if(flag ==1||s!=NULL) { cout<<0<<endl; }}int main(){ char n[100]; while(cin>>n) { LinkStack s; InitStack(s); int flag =0; int x= strlen(n); for(int i=0;i<x-1;i++) { if(n[i]=='I') { Push(s,'I');//进栈 不考虑为空的情况 进栈后出栈 } else if(n[i]=='O'&&s!=NULL) { Pop(s,'O');//出栈 } else { flag = 1; break; } } Print(flag,s); } return 0;}
#include <bits/stdc++.h>
using namespace std;
int main()
{
int i,len;
char s[111];
while(cin>>s)
{
int count=0;
len=strlen(s);
for(i=0;i<len;i++)
{
if(s[i]=='I')
count++;
else
count--;
if(count<0)
break;
}
if(count==0)
cout<<1<<endl;
else
cout<<0<<endl;
}
return 0;
}