8.28笔记

47 阅读1分钟

image.png

#include <string>

using namespace std;
 
int main(){
    string str;
    getline(cin,str);
    string ans="";
    int n=str.size();
    int i=n-1,j=n-1;
    while(j>=0){
        if(str[j] != ' '){
            for(i=j;i>=0;i--){
                if(str[i] == ' ')
                    break;
            }
            ans+=str.substr(i+1,j-i);
            ans+=" ";
            j=i;
        }
        j--;
    }
    ans.erase(ans.end()-1);
    cout<<ans<<endl;
    return 0;
}

image.png

#include<iostream>
using namespace std;

//dp[i],i时候,最多点赞数。dpnum[i],i时候,篇数。
int main() {
    int n;
    cin >> n;
    vector<int> v;
    for (int i = 0; i < n; i++) {
        int tp;
        cin >> tp;
        v.push_back(tp);
    }
    vector<int> dp(n), dpnum(n);
    dp[0] = v[0];
    dp[1] = (v[0] > v[1]) ? v[0] : v[1];
    dpnum[0] = 1;
    dpnum[1] = 1;
    for (int i = 2; i < n; i++) {
        //选用了v[i],所以篇数+1
        if ((v[i] + dp[i - 2]) > dp[i - 1]) {
            dp[i] = v[i] + dp[i - 2];
            dpnum[i] = 1+ dpnum[i - 2];
        }
        //没有选用,所以篇数为前一个,即dpnum[i - 1]
        else
        {
            dp[i] = dp[i - 1];
            dpnum[i] = dpnum[i - 1];
        }
    }

    cout << dp[n-1]<<' '<< dpnum[n - 1];

}

image.png

#include<string>
using namespace std;


int main() {
	string str;
	getline(cin, str);
	string res;
	for (int i = 0; i < str.size(); i++) {
		if (str[i] == '(')
		{
			i++;
			int n = 1;
			while (i < str.size() && n != 0)
			{
				if (str[i] == '(')
					n++;
				if (str[i] == ')')
					n--;
				if (n == 0)
					break;
				i++;
			}
		}
		else if (str[i] == '<')
		{
			if (!res.empty())
				res.pop_back();
		}
		else {
			res.push_back(str[i]);
		}
	}
	cout << res << endl;
	return 0;
}

image.png

using namespace std;
typedef pair<int,int> PII;
#define x first
#define y second
int main()
{
    int N;
    while(cin>>N)
    {
        vector<string> g(N);
        string line;
        PII st,end;
        for(int i=0;i<N;i++)
        {
            cin>>line;
            for(int j=0;j<N;j++)
            {
                if(line[j]=='S')   st={i,j};
                if(line[j]=='E')    end={i,j};
            }
            g[i]=line;
        }
        //cout<<st.x<<" "<<st.y<<endl;
        queue<PII> q;
        q.push(st);
        int cnt=0;
        bool vis[N][N];
        memset(vis,0,sizeof vis);
        int dirs[5]={1,0,-1,0,1};
        vis[st.x][st.y]=true;
        bool flag=false;
        while(!q.empty())
        {
            int size=q.size();
            for(int i=0;i<size;i++)
            {
                auto cur=q.front(); q.pop();
                if(cur.x==end.x && cur.y==end.y)
                {
                    cout<<cnt<<endl;
                    flag=true;
                    break;
                }
                for(int k=0;k<4;k++)
                {
                    int ni=cur.x+dirs[k],nj=cur.y+dirs[k+1];
                    if(ni==-1) ni=N-1;
                    else if(ni==N) ni=0;
                    if(nj==-1) nj=N-1;
                    else if(nj==N) nj=0;
                    if(vis[ni][nj] || g[ni][nj]=='#') continue;
                    q.push({ni,nj});
                    vis[ni][nj]=true;
                }
            }
            cnt++;
        }
        if(!flag)
            cout<<-1<<endl;
    }
    return 0;
}