1 条题解

  • 0
    @ 2025-8-24 21:36:58

    自动搬运

    查看原文

    来自洛谷,原作者为

    avatar Alex_Wei
    **

    搬运于2025-08-24 21:36:58,当前版本为作者最后更新于2019-01-29 22:32:04,作者可能在搬运后再次修改,您可在原文处查看最新版

    自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多

    以下是正文


    这是一道模拟题,有些细节需要注意。


    主要思路:

    声明一个结构体 fact\mathrm{'fact'}:里面装一个字符串(函数名)和一个 int\mathrm{int} 类型的 vector\mathrm{vector}

    再用一个 fact\mathrm{'fact'} 类型的 vector\mathrm{vector} 存储答案,最后输出它的大小即可。

    • 判断是否重复:如果参数个数一样,函数名字相同,且每个参数类型相同,那么这两个函数就相同。

    • 可以单独写函数来输入并处理参数,这样程序可读性更高。


    实现细节见代码:

    #include<bits/stdc++.h>
    using namespace std;
    #define pb push_back
    struct fact{
    	string na;//函数名 
    	vector <int> para;//由于不知道参数个数,所以最好用vector存参数类型
    };
    int n;
    vector <fact> ans;//答案
    int strcmp(string a,string b)//判断两个字符串是否相同(因为不会用现成函数,所以只好手写strcmp) 
    {
    	if(a.size()!=b.size())return 0;
    	for(int x=0;x<a.size();x++)if(a[x]!=b[x])return 0;
    	return 1;
    }
    vector <int> getpara()//获取参数类型的函数
    {
    	string p;
    	int pc=0;//0:数字,1:字符
    	vector <int> para;//各个所输入参数的类型
    	getline(cin,p);//由于有空格,所以需要用getline 
    	for(int x=0;x<p.size();x++){
    		if(p[x]==','||p[x]==')')para.pb(pc),pc=0;//一个参数结束,将它的类型压入vector
    		if(p[x]==39)pc=1;//如果有单引号,那么这个参数就是字符类型
    	}
    	return para;//返回所有参数类型 
    }
    int main()
    {
    	cin>>n;
    	for(int x=1;x<=n;x++){
    		string na;//函数名 
    		cin>>na;
    		for(int y=0;y<na.size();y++)if(na[y]<'a')na[y]+=32;//都转为小写
    		if(strcmp(na,"main"))continue;//判断是否是 "main" 函数
    		int same=1;//same:是否重复
    		vector <int> para=getpara();//获取参数类型
    		for(int y=0;y<ans.size();y++){//和已有答案去重
    			fact cmp=ans[y];
    			if(cmp.para.size()!=para.size()||!strcmp(cmp.na,na))same=0;//参数个数不同或函数名不同
    			else for(int z=0;z<cmp.para.size();z++)
    					if(cmp.para[z]!=para[z])same=0;//参数类型不同
    		}
    		if(!same||x==1)ans.pb((fact){na,para});//如果不重复或者才调用第一个函数,那就把这个函数压入答案
    	}
    	cout<<ans.size();
    	return 0;
    }
    

    Upd:2019.12.11:\mathrm{Upd:2019.12.11:} 添加 Latex\mathrm{Latex},美化文章。

    • 1

    信息

    ID
    1379
    时间
    1000ms
    内存
    125MiB
    难度
    2
    标签
    递交数
    0
    已通过
    0
    上传者