标题:谁能帮我看看这个问题
只看楼主
liujun2008
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2008-11-19
 问题点数:0 回复次数:1 
谁能帮我看看这个问题
题目1:
     例子分析:
     假设从某一个点出发,可以到达许多站点,途中经过的路段有 aB,AC,Ad,bE,Bf,Cg,CH,DI,EJ,EK,eL,fM,Fn,Go,gP,Hq,HR,HS,IT,IU,IV,iW,jx,jy
    注意:相同字母的大小写为同一个站点。例如a和A是同一点
   编一个程序:
    (在只有一个起点的情况下)输入任意但又不违反客观事实的一些路段(路段用两个字母表示,如:aB),要求程序能判断终点的个数。
   输入一些路段:   (输入)
   aB,AC,Ad,bE,Bf,Cg,CH,DI,EJ,EK,eL,fM,Fn,Go,gP,Hq,HR,HS,IT,IU,IV,iW,jx,jy
(输出)终点的个数是:15
   分别为:m,n,x,y,k,l,o,p,q,r,s,t,u,v,w(每个终点以小写的形式输出)
搜索更多相关主题的帖子: liu jun 
2008-11-19 16:06
dreamstring
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2008-11-11
得分:0 
我编了一个程序,感觉写得挺笨拙的,也花了不少时间。本身我自己是新手,也正好拿这个题做个练习,大家一定会有更好的方法,希望大家拿出来分享。下面是我写的程序,输入:
aB,AC,Ad,bE,Bf,Cg,CH,DI,EJ,EK,eL,fM,Fn,Go,gP,Hq,HR,HS,IT,IU,IV,iW,jx,jy,
输出:
终点的个数为:15
分别为:k l m n o p q r s t u v w x y

#include<string>
#include<iostream>
#include<vector>
#include<algorithm>

using namespace std;

int del(vector<char> &origin,int &con);

int main()
{
    string station;
    cout<<"输入一些路段:"<<endl;
    cin>>station;

    int count=0;

    vector<char> result;

    for(string::size_type last=1; last<=station.size();)
    {
        string::size_type first=0;
        while(first<=station.size())
        {
            station[first]=toupper(station[first]);
            station[last]=toupper(station[last]);
            if(station[first]==station[last])
                break;
            
            if(first>station.size()-3)
            {
                station[last]=tolower(station[last]);
                result.push_back(station[last]);
                ++count;
            }
            first=first+3;
        }
        
        last=last+3;
        
    }
    del(result,count);
    cout<<"终点的个数为:"<<count<<endl;
    cout<<"分别为:";
    for(vector<char>::size_type j=0;j!=result.size();++j)
        cout<<result[j]<<" ";
    cout<<endl;
    return 0;
}

int del(vector<char> &origin,int &con)
{
    for(vector<char>::iterator size=origin.begin();size!=origin.end();++size)
    {
        vector<char>::iterator ind=origin.begin();
        while(find(size+1,origin.end(),*size)!=origin.end())
        {
            ind=find(size+1,origin.end(),*size);
            origin.erase(ind);
            --con;
        }
    }
    return 0;
}
2008-11-20 10:16



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-245176-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.022101 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved