CVTE第二次笔试

选择瞎答得,直接编程题目

1.

使用递归将字符串中的数字去并按顺序打印

输入例  adfsafsfs123123eogie09789

输出例

123123

09789

#include<iostream>
using namespace std;


void func(int ptr, string &str, bool end)
{
    if(ptr == str->length())
        return;
    if(ptr<str->length() && str[ptr]>='0' && str[ptr]<='9')
    {
        end = false;
        cout<<str[ptr];
    }
    else
    {
        if(end == false)
            cout<<"\n";
        end = true;
    }
    func(ptr+1, str, end);
}

int main()
{
    string str;
    cin>>str;
    func(0, str, false);
    return 0;
}

 

 

2.动态规划问题,A,B,C,D,E五个站点,每个站点之间有三种交通方式,公交、地铁、出租,输入一个表,该表有四行三列,每行表示两个站点间三种交通方式的费用,五个站点最多允许换乘两次,求最小花费。

StationCount = 5;
TramsportCount = 3;
int MinimumCost(const int ticketPrices[StationCount-1][TramsportCount])
{
    int min = 0xffffffff;
    for(int i=0; i<StationCount-1; ++i)
    {
        int cost = ticketPrices[0][i];
        short tc = 0;
        for(int j=0; j<StationCount-1; ++j)//可能发生换乘换乘
        {
            cost = cost+ticketPrices[1][j];
            if(i !=j )
                ++tc;
            for(int k=0; k<StationCount-1; ++k)//可能发生换乘换乘
            {
                cost = cost+ticketPrices[2][k];
                if(j != k)
                    ++tc;
                for(int m=0; m<StationCount-1; ++m)//检查是否还可以换乘
                {
                    if(tc < 2)
                    {
                        cost += ticketPrices[3][m];
                        if(cost < min)
                            min = cost;
                    }
                    else
                    {
                        cost += cost+ticketPrices[3][k];
                        if(cost < min)
                            min = cost;
                        break;
                    }
                }
            }
            
        }
    }
   return min; }

 

posted @ 2020-09-08 08:09  C_hp  阅读(194)  评论(0编辑  收藏  举报