zoukankan      html  css  js  c++  java
  • PTA团体程序设计天梯赛题目集 L1-064 估值一亿的AI核心代码 (20分)

    去年比赛的时候虽然对了,但写的好麻烦,以至于后面不敢再写这道题,今天又写了一遍,贴出来做纪念。

    #include<stdio.h>
    #include<bits/stdc++.h>
    using namespace std;
    #define ll long long
    #define io_opt ios::sync_with_stdio(false);cin.tie(0);cout.tie(0)
    int n;
    bool isbiaodian(char x){
    	return !(x>='0'&&x<='9'||x>='a'&&x<='z'||x>='A'&&x<='Z'||x==' ');
    }
    bool iswall(char x){
    	return !(x>='0'&&x<='9'||x>='a'&&x<='z'||x>='A'&&x<='Z');
    }
    void del32(vector<char> &v){
    	while(!v.empty()&&*v.begin()==' ') v.erase(v.begin());
    	while(!v.empty()&&*(v.end()-1)==' ') v.erase(v.end()-1);
    	for(int i=0;i<v.size();i++){
    		if(v[i]!=' ') continue;
    		while(i+1<v.size()&&v[i+1]==' ') v.erase(v.begin()+i+1);
    	}
    	for(int i=0;i<v.size();i++){
    		if(v[i]!=' ') continue;
    		if(i+1<v.size()&&isbiaodian(v[i+1])) v.erase(v.begin()+i);
    	}
    	
    }
    void smallwen(vector<char> &v){
    	for(int i=0;i<v.size();i++){
    		if(v[i]=='?') v[i]='!';
    		if(v[i]>='A'&&v[i]<='Z'&&v[i]!='I'){
    			v[i]+='a'-'A';
    		}
    	}
    }
    void you2i(vector<char> &v){
    	string s="can you",t="1 can";
    	for(int i=0;i<v.size();i++){
    		if(v[i]!=s[0]||(i-1>=0&&!iswall(v[i-1]))||i+s.size()-1>=v.size()||(i+s.size()<v.size()&&!iswall(v[i+s.size()]))) continue;
    		bool fg=true;
    		for(int j=0;j<s.size();j++){
    			if(v[i+j]!=s[j]){
    				fg=false;
    				break;
    			}
    		}
    		if(!fg) continue;
    		for(int j=1;j<=s.size();j++) v.erase(v.begin()+i);
    		for(int j=t.size()-1;j>=0;j--) v.insert(v.begin()+i,t[j]);
    	}
    	s="could you",t="1 could";
    	for(int i=0;i<v.size();i++){
    		if(v[i]!=s[0]||(i-1>=0&&!iswall(v[i-1]))||i+s.size()-1>=v.size()||(i+s.size()<v.size()&&!iswall(v[i+s.size()]))) continue;
    		bool fg=true;
    		for(int j=0;j<s.size()&&i+j<v.size();j++){
    			if(v[i+j]!=s[j]){
    				fg=false;
    				break;
    			}
    		}
    		if(!fg) continue;
    		for(int j=1;j<=s.size();j++) v.erase(v.begin()+i);
    		for(int j=t.size()-1;j>=0;j--) v.insert(v.begin()+i,t[j]);
    	}
    }
    void i2you(vector<char> &v){
    	string s="I",t="you";
    	for(int i=0;i<v.size();i++){
    		if(v[i]!=s[0]||(i-1>=0&&!iswall(v[i-1]))||i+s.size()-1>=v.size()||(i+s.size()<v.size()&&!iswall(v[i+s.size()]))) continue;
    		bool fg=true;
    		for(int j=0;j<s.size();j++){
    			if(v[i+j]!=s[j]){
    				fg=false;
    				break;
    			}
    		}
    		if(!fg) continue;
    		for(int j=1;j<=s.size();j++) v.erase(v.begin()+i);
    		for(int j=t.size()-1;j>=0;j--) v.insert(v.begin()+i,t[j]);
    	}
    	s="me",t="you";
    	for(int i=0;i<v.size();i++){
    		if(v[i]!=s[0]||(i-1>=0&&!iswall(v[i-1]))||i+s.size()-1>=v.size()||(i+s.size()<v.size()&&!iswall(v[i+s.size()]))) continue;
    		bool fg=true;
    		for(int j=0;j<s.size()&&i+j<v.size();j++){
    			if(v[i+j]!=s[j]){
    				fg=false;
    				break;
    			}
    		}
    		if(!fg) continue;
    		for(int j=1;j<=s.size();j++) v.erase(v.begin()+i);
    		for(int j=t.size()-1;j>=0;j--) v.insert(v.begin()+i,t[j]);
    	}
    }
    void i2I(vector<char> &v){
    	for(int i=0;i<v.size();i++){
    		if(v[i]=='1') v[i]='I';
    	}
    }
    void solve(string &s){
    	vector<char>v;
    	for(int i=0;i<s.size();i++){
    		v.push_back(s[i]);
    	}
    	del32(v);
    	smallwen(v);
    	you2i(v);
    	i2you(v);
    	i2I(v);
    	cout<<"AI: ";
    	for(int i=0;i<v.size();i++){
    		cout<<v[i];
    	}
    	cout<<endl;
    }
    string s[20];
    int main(){
    	io_opt;
    	/*vector<int>v;
    	for(int i=0;i<5;i++)
    		v.push_back(i);
    	v.insert(v.begin()+1,10);
    	for(int &i:v) cout<<i<<endl;*/
    	cin>>n;
    	getline(cin,s[0]);
    	for(int i=1;i<=n;i++){
    		getline(cin,s[i]);
    		cout<<s[i]<<endl;
    		solve(s[i]);
    	}
    	return 0;
    }
    
  • 相关阅读:
    软件开发和机械制造的核心差别
    不做纯技术导向的程序员与中国特色的社会主义
    从代码里你可以看到什么?
    多少钱才可让人重拾理想
    项目经理一定比码农好么?
    技术还是管理?
    评李彦宏先生的内部邮件
    组织行为学对项目管理的意义(1)
    组织行为学对项目管理的意义:动机理论
    Silverlight与ashx通讯序列化DateTime时需注意的细节
  • 原文地址:https://www.cnblogs.com/sz-wcc/p/13882319.html
Copyright © 2011-2022 走看看