NYOJ 2 括号配对问题
栈的简单应用。可使用STL。
1 #include2 #include 3 #include 4 #include 5 using namespace std; 6 const int maxn=10000+5; 7 8 char ch[maxn]; 9 stack s;10 11 bool deal()12 {13 while(!s.empty())14 s.pop();15 int len=strlen(ch);16 for(int i=0;i
NYOJ 5 Binary String Matching
简单模拟
1 #include2 #include 3 #include 4 using namespace std; 5 const int maxn=1000+5; 6 7 char a[maxn],b[maxn]; 8 9 int deal()10 {11 int num=0,j,len1,len2;12 len1=strlen(a);13 len2=strlen(b);14 for(int i=0;i
NYOJ 63 小猴子下落
有规律
观察可知,每一层小猴子经过节点往下都是左右轮流。
并且,猴子I为奇数时在二叉树左半部分,偶数时在右半部分,到子结点的猴子数目逐层减半。
所以,我们只需根据I的大小,判断每一层猴子会去左右哪一边。
这里用到一个性质:左子结点编号=父节点*2,右结点编号=父节点*2+1.
1 #include2 #include 3 #include 4 using namespace std; 5 6 int main() 7 { 8 int d,n,ans; 9 while(scanf("%d%d",&d,&n)&&(d+n))10 {11 ans=1;12 while(--d)13 {14 if(n%2==0)15 {16 n/=2;17 ans=ans*2+1;18 }19 else20 {21 n=(n+1)/2;22 ans=ans*2;23 }24 }25 printf("%d\n",ans);26 }27 return 0;28 }
NYOJ 93 汉诺塔(三)
简单模拟
1 #include2 #include 3 #include 4 using namespace std; 5 const int maxn=70; 6 7 struct node 8 { 9 int len;10 int s[maxn];11 }h[5];12 13 int n,p;14 15 void init()16 {17 h[1].len=h[2].len=h[3].len=-1;18 for(int i=n;i>=1;i--)19 h[1].s[++h[1].len]=i;20 }21 22 int deal()23 {24 int x,y,xx,yy,f=0;25 for(int i=0;i