北理复试上机题2011年

1. 输入一组单词(区分大小写), 统计首字母相同的单词的个数,相同的单词不累加,输出格式:“字母,个数” 

思路来源:参考

#include 
#include 
#include 
using namespace std;
 
int main()
{
    set s;
    map m;
    string str;
    
    while(cin>>str)
    {
    	if(str=="#") break; 
        s.insert(str);//集合元素唯一,去重 
    }
    
    set::iterator it;
    for(it=s.begin(); it!=s.end(); it++)
    {
        ++m[(*it)[0]];//键唯一 ,键去重 ,值++ 
    }
 	
    map::iterator mit;
 
    for(mit=m.begin(); mit!=m.end(); mit++)
    {
        cout<first<<" "<second<

这里我没使用stl函数,就比较麻烦一点,但是思路是一样的,如下:

#include 
#include 
#include  
using namespace std;
 
/*
1. 输入一组单词(区分大小写), 统计首字母相同的单词的个数,相同的单词不累加,输出格式:“字母,个数” 
*/ 
typedef struct res{
	string letter;
	int count;
}result;
bool ishas(vector vb, string s){
	for(int i=0;i& vd, string s){
	for(int i=0;i vc;
	vector vb;
	vector vd;
	cout<<"请输入单词,输入#结束"<>str){
		if(str=="#")
			break;
		vc.push_back(str);	
	}

	//先排序
	sort(vc.begin(), vc.end());
//	for(int i=0;iletter = vb[i].substr(0,1);
			r->count = 1;
			vd.push_back(*r);
		}
	}
	//再显示 
	for(int i=0;i

2. 输入一组单词,(区分大小写),输出其字典排序 

#include 
#include 
#include  
using namespace std;
 
/*
输入一组单词,(区分大小写),输出其字典排序 
*/ 


int main()
{
	string str;
	vector vc;
	cout<<"请输入单词,输入#结束"<>str){
		if(str=="#")
			break;
		vc.push_back(str);	
	}

	//先排序
	sort(vc.begin(), vc.end());
	for(int i=0;i

3. 给一个字符串(aaaa(bbbb(cccc,dddd),eeee(ffff)))该字符串
表明的是各人的层次关系
比如aaaa是bbbb和eeee的领导,bbbb是cccc和dddd的领导
现输入一个名称,比如ffff,要求输出其领导关系
输出:aaaa>eeee>ffff  

#include 
#include 
#include  
using namespace std;
 
/*
3. 给一个字符串(aaaa(bbbb(cccc,dddd),eeee(ffff)))该字符串
表明的是各人的层次关系
比如aaaa是bbbb和eeee的领导,bbbb是cccc和dddd的领导
现输入一个名称,比如ffff,要求输出其领导关系
输出:aaaa>eeee>ffff 
*/ 


int main()
{
	string str1, str2, str="";
	vector vc;
	cout<<"请输入字符串:"<>str1;
	cout<<"请输入要查找的字符串:"<>str2;
	
	char stack[20];
	int top=0;

	int pos = str1.find(str2);
	cout<=0;i--){//思路,处理字符串,匹配括号,截取字符串 联想到括号匹配,这里对栈的处理进行了变形 
		/*
			//(aaaa(bbbb(cccc,dddd),eeee(ffff)))
	   //top  3    2    1         0     1	
	   如ffff
	   在top==1 && 字符为'('时,处理字符串,在结果字符串中:加入eeee> ,变成eeee>ffff
	   在top==2 && 字符为'('时,处理字符串,在结果字符串中:加入aaaa>,变成aaaa>eeee>ffff
	   top==3时,满足,这里不写出来,因为后面我们会去掉 
	   同理:
	    如eeee
			//(aaaa(bbbb(cccc,dddd),eeee(ffff)))
	   //top  2    1    0         1    
	   在top==1 && 字符为'('时,处理字符串,在结果字符串中:加入aaaa> ,变成aaaa>ffff
	   同理top==2不写出来 
	   	*/ 
		if(str1[i]==')'){
			top--;
			cout<");
			index = i;
		}
	}
	cout<

还有一种解法,这里我还没看:

#include 
#include 
using namespace std;
int main()
{
    //(aaaa(bbbb(cccc,dddd),eeee(ffff)))
    int n=0;
    string s,str[105],t;//str为字符串栈
    cin>>s>>t;
    for(int i=0; i=0; k--)
            {
                if(str[k]!="(")
                    n--;
                else if(str[k]=="(")
                {
                    break;
                }
            }
        }
        else if(s[i]==')')//遇到右括号将右括号和前一个左括号之间的内容和左括号删除
        {
            for(int k=n-1; k>=0; k--)
            {
                if(str[k]!="(")
                    n--;
                else if(str[k]=="(")
                {
                    n--;
                    break;
                }
            }
        }
        else//字母或数字
        {
            int j;
            string tt="";
            for(j=i; j='a'&&s[j]<='z')||(s[j]>='A'&&s[j]<='Z'))
                    tt+=s[j];
                else
                {
                    str[n++]=tt;
                    break;
                }
            }
            if(tt==t)//找到目标字符串则退出循环
                break;
            i=j-1;
        }
    }
 
    for(int i=0; i";
            else
                cout<

 

 

作者:无涯明月

上篇: 北理复试上机题2010年

你可能感兴趣的:(北京理工大学数据结构889)