zoukankan      html  css  js  c++  java
  • HDU1022

    #include <bits/stdc++.h>
    using namespace std;
    int main()
    {
        string a,b;
        int t[1001],n;
        while(cin>>n>>a>>b)
        {
            stack<char> k;
            int x=0,y=0;
            for(int i=0;i<n;i++)
            {
                k.push(a[i]);
                t[x++]=0;
                while(!k.empty() && k.top()==b[y])//栈顶与b[y]相等 
                {
                    k.pop();
                    y=y+1;
                    t[x++]=1;
                }
            }
            if(y!=n)
                cout<<"No."<<endl;
            else
                {
                    cout<<"Yes."<<endl;
                    for(int i=0;i<x;i++)
                    {
                        if(t[i]==0)
                            cout<<"in"<<endl;
                        else
                            cout<<"out"<<endl;
                    }
                }
            cout<<"FINISH"<<endl;
        }
        return 0;
    }

    x++是个坑,立即使用的时候x的值没有增加,当下一次用的时候x的值才会增加。假如x的初值为0,定义一个int a[100],a[x++]是从x=0开始的

    又比如最后一个for循环:

    for(int i=0;i<x;i++)  这里面的x就是增加过的,所以如果这个时候写成i<=x就会多输出一个out(这里有个疑问,在main()函数外没有赋值的整形数组的初值都为0,在这里我把int t[1001];写在外面之后又运行发现确实是这样,但是写在main()内的初值为1吗,因为这样得到的输出为out)

    开始没看懂in和out应该怎么输出,看了别人的代码,学习到了

    今天上课讲了++的运算,之前没有系统的学习过,现在再写一点

    x++:先返回再加一   ++x:先加一再返回 

    x++的加一操作在下一次使用时内存中存的值就加一了

    ++运算的左端必须是一个变量,如a+++++b(即((a++)++)+b,根据贪心得到的)因为a++得到的是一个数值,而不是一个变量,故编译不通过(就如同1++一样,不是变量)写成a+++++b或(a++)+(++b)就行

    而++++x是存在的,即进行两次++运算

  • 相关阅读:
    Python 面向对象补充
    Python 多态
    Web_php_unserialize-攻防世界XCTF
    sqli-labs之Page-4
    sqli-labs之Page-3
    sqli-labs之Page-1
    DVWA-反射型XSS
    DVWA-File Upload
    DVWA-File Inclusion
    DVWA-CSRF
  • 原文地址:https://www.cnblogs.com/benzikun/p/10520118.html
Copyright © 2011-2022 走看看